这部分总算是搞清楚了,就来写写我的认识
一. 内部类,外部内- 官方对内部类和外部类的解释:
内部类可以直接访问外部类的成员,包括私有。
外部类要访问内部类的成员,必须创建对象
- 我对内部类和外部类的理解:
内部内范围更小,小的可以进入大的
外部内范围更大,大的进不去小的## 二.成员内部类,局部内部类- 官方对其解释:
在成员位置定义的类,被称为成员内部类。
在局部位置定义的类,被称为局部内部类。 - 我对其理解:
在类中方法外的类,是成员内部类
在类中方法中的类,是局部内部类
下面用代码解释一下局部内部类:
需要注意的是:局部内部类创建对象只能在包含它的方法中
- 局部内部类
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();
}
}