内部类,外部类,局部内部内,成员内部类,匿名内部类

这部分总算是搞清楚了,就来写写我的认识

一. 内部类,外部内- 官方对内部类和外部类的解释:

内部类可以直接访问外部类的成员,包括私有。
外部类要访问内部类的成员,必须创建对象

  • 我对内部类和外部类的理解:
    内部内范围更小,小的可以进入大的
    外部内范围更大,大的进不去小的## 二.成员内部类,局部内部类- 官方对其解释:
    在成员位置定义的类,被称为成员内部类。
    在局部位置定义的类,被称为局部内部类。
  • 我对其理解:
    在类中方法外的类,是成员内部类
    在类中方法中的类,是局部内部类
下面用代码解释一下局部内部类:

需要注意的是:局部内部类创建对象只能在包含它的方法中

  • 局部内部类
class Outer {
    public int num = 10;
    public void study(){
        class Inner {//局部内部类
            public void show() {
            }
        }
    }
    
}
  • 成员内部类:
class Outer {
    public int num = 10;
    public void study(){
    }
    class Inner {//成员内部类
        public void show() {
        }
    }
}

三.匿名内部类

匿名内部类:就是局部内部类的简化写法

格式:
new 类名或者接口名(){ 重写方法; } ;

学习到这里如果感觉困难太大,可以先用局部内部类的格式写出来,再将其简化

  • 标准的匿名内部类
interface Inter {
    void show();
}

class outer {
      public static  void method(){
          new Inter(){
              public void show(){
                    System.out.println("HelloWorld");
                }
            }.show();
        }
}

class OuterDemo {
    public static void main(String[] args) {
        outer.method();
    }
}
  • 用局部内部内写出来的实现同样功能的代码块
interface Inter {
    void show();
}

class outer {
    public static void method() {
        class neibulei implements Inter {

            @Override
            public void show() {
                System.out.println("HelloWorld");
            }
        }
        neibulei neibulei = new neibulei();
        neibulei.show();
    }
}
 class OuterDemo {
        public static void main(String[] args) {
            outer outer = new outer();
            outer.method();
        }
}
发布了43 篇原创文章 · 获赞 7 · 访问量 1745

猜你喜欢

转载自blog.csdn.net/y18791050779/article/details/104135565
今日推荐