内部类

内部类(选修)

源代码

内部类定义

1
2
3
4
5
6
7
8
9
10
11
12
public class Outer {
private int id = 10; //外部类中私有属性
public void out(){
//这是一个外部类方法
}
public class Inner{ //这是一个内部类
public void getId(){
//这是一个内部类方法
System.out.println(id);//内部类可以获取到外部类私有变量
}
}
}

内部类实例化

1
2
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner(); //利用外部类定义的对象outer来实例化内部类

匿名内部类(必修)

匿名内部类是一个继承了该类或者实现了该接口的子类匿名对象

这里的类可以是具体类也可以是抽象类

直接调用类中方法

1
new Outer().out; //不实例化对象,只初始化类,也可以调用类中方法

在开发中的使用*

new 接口直接给一个接口的对象,在执行体内重写方法,也叫做匿名内部类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Application {
public static void main(String[] args) {
//多态,接口引用指向匿名内部类对象
UserService userService = new UserService(){
//重写hello方法
@Override
public void hello() {
System.out.println("hello");
}
};
//可通过引用变量userService调用接口中重写过的方法
userService.hello();
}
interface UserService{ //一个接口
void hello();
}
}


内部类
http://blog.170827.xyz/2022/07/24/内部类/
作者
XIAOBAI
发布于
2022年7月24日
许可协议