码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【JavaSE】实例内部类、静态内部类和匿名内部类


    目录

    1.内部类的定义和分类

    2.实例内部类

    注意事项1:在实例内部类当中,不可以定义一个静态的成员变量。 因为实例内部类的调用需要依赖一个对象,static不依赖对象。

    注意事项2: 如果一定要在实例内部类中定义一个静态的成员变量,使用static final修饰。常量是在编译的时候确定的。

    注意事项3: 实例化内部类对象,一定要先实例外部类

    注意事项4: 如果实例内部类的成员变量和外部类的成员变量相同,打印的是实例内部类的属性

    注意事项5:在实例内部类中,包含两个this,一个是自己的this,一个是外部类的this,可以通过外部类类名.this

     注意事项6:实例内部类的应用

    3.静态内部类

    注意事项1:在静态内部类中,不能使用外部类的普通成员变量。因为普通成员变量需要对象。

     注意事项2:实例静态内部类对象。new一个外部类.静态内部类

    3. 匿名内部类


    1.内部类的定义和分类

    定义在类内部的类,叫做内部类。内部类分为四种:

    本地内部类(定义在方法中的类)、实例内部类、静态内部类、匿名内部类

    2.实例内部类

    1. class OutClass{
    2. public int data1 = 1;
    3. public static int data2 = 2;
    4. private int data3 = 3;
    5. // 实例内部类
    6. class InnerClass{
    7. public int data1 = 1111;
    8. public int data4 = 4;
    9. // 1.在实例内部类当中,不可以定义一个静态的成员变量。 因为实例内部类的调用需要依赖一个对象,static不依赖对象
    10. // public static int data5 = 5;
    11. // 如果非要用,写称static final修饰 常量是在编译的时候确定的
    12. public static final int data5 = 5;
    13. private int data6 = 6;
    14. public void func(){
    15. System.out.println("这是实例内部类的func方法");
    16. }
    17. }
    18. }

    注意事项1:在实例内部类当中,不可以定义一个静态的成员变量。 因为实例内部类的调用需要依赖一个对象,static不依赖对象。

    注意事项2: 如果一定要在实例内部类中定义一个静态的成员变量,使用static final修饰。常量是在编译的时候确定的。

    注意事项3: 实例化内部类对象,一定要先实例外部类

    注意事项4: 如果实例内部类的成员变量和外部类的成员变量相同,打印的是实例内部类的属性

    注意事项5:在实例内部类中,包含两个this,一个是自己的this,一个是外部类的this,可以通过外部类类名.this

    1. class OutClass{
    2. public int data1 = 1;
    3. public static int data2 = 2;
    4. private int data3 = 3;
    5. // 实例内部类
    6. class InnerClass{
    7. public int data1 = 1111;
    8. public int data4 = 4;
    9. public static final int data5 = 5;
    10. private int data6 = 6;
    11. public void func(){
    12. System.out.println("这是实例内部类的func方法");
    13. // 在实例内部类中,包含两个this,一个是自己的this,一个是外部类的this的。可以通过外部类类名.this
    14. System.out.println(this.data1);
    15. System.out.println(OutClass.this.data1);
    16. }
    17. }
    18. }
    19. public class TestDemo3 {
    20. public static void main(String[] args) {
    21. // 2.创建实例内部类的对象 依赖外部类的对象 实例内部类对象,一定要先实例外部类
    22. OutClass outClass = new OutClass();
    23. OutClass.InnerClass innerClass = outClass.new InnerClass();
    24. innerClass.func();
    25. }
    26. }

     注意事项6:实例内部类的应用

    可以用于实现链表时,节点类使用实例内部类

    1. class TestLink{
    2. class Node{
    3. }
    4. }

    3.静态内部类

    1. class OutClass{
    2. public int data1 = 1;
    3. public static int data2 = 2;
    4. private int data3 = 3;
    5. // 静态内部类
    6. static class InnerClass{
    7. public int data4 = 4;
    8. public static final int data5 = 5;
    9. private int data6 = 6;
    10. public void func(){
    11. System.out.println("这是实例内部类的func方法");
    12. }
    13. }
    14. }

    注意事项1:在静态内部类中,不能使用外部类的普通成员变量。因为普通成员变量需要对象。

    非要使用,在静态内部类中,实例一个外部类对象。通过这个引用,来获得外部类的普通成员变量。

     注意事项2:实例静态内部类对象。new一个外部类.静态内部类

    1. public static void main1(String[] args) {
    2. // new一个外部类.静态内部类
    3. OutClass.InnerClass innerClass = new OutClass.InnerClass();
    4. innerClass.func();
    5. }

    3. 匿名内部类

    1. public class Demo1 {
    2. public static void main(String[] args) {
    3. Thread t = new Thread(){
    4. @Override
    5. public void run() {
    6. System.out.println("hello thread");
    7. try {
    8. Thread.sleep(1000);
    9. } catch (InterruptedException e) {
    10. e.printStackTrace();
    11. }
    12. }
    13. };
    14. t.start();
    15. while (true){
    16. System.out.println("hello main");
    17. try {
    18. Thread.sleep(1000);
    19. } catch (InterruptedException e) {
    20. e.printStackTrace();
    21. }
    22. }
    23. }
    24. }

    匿名类在多线程中使用。

  • 相关阅读:
    MBTI职业性格测试,为什么每次不同?MBTI到底准不准?
    SVProgressHUD和MBProgressHUD的优缺点与SVProgressHUD震动实现
    Redis 面试题
    安装MongoDb(mac系统)步骤以及踩坑笔记(图文详解)
    人工智能现在可以从文本中生成具有CD音质的音乐,而且只会越来越好
    C/C++ 获取主机网卡MAC地址
    Hadoop分布式文件系统-HDFS
    Ubuntu16.04下载地址
    (C语言)数据结构——归并排序
    What is ChatGPT used for?
  • 原文地址:https://blog.csdn.net/weixin_44258092/article/details/126441519
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号