内部类
内部类(选修)
源代码
内部类定义
public class Outer {
private int id = 10; //外部类中私有属性
public void out(){
//这是一个外部类方法
}
public class Inner{ //这是一个内部类
public void getId(){
//这是一个内部类方法
System.out.println(id);//内部类可以获取到外部类私有变量
}
}
}
内部类实例化
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner(); //利用外部类定义的对象outer来实例化内部类
匿名内部类(必修)
匿名内部类是一个继承了该类或者实现了该接口的子类匿名对象
这里的类可以是具体类也可以是抽象类
直接调用类中方法
new Outer().out; //不实例化对象,只初始化类,也可以调用类中方法
在开发中的使用*
new 接口直接给一个接口的对象,在执行体内重写方法,也叫做匿名内部类
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();
}
}