匿名内部类:有的类只想用一次,可以简化开发
- 内部类实现接口,运行类型就是接口的类型,编译类型是jvm底层自己创建的内部类名,是内部类名$1,创建类之后又创建了实例,并且把地址返回给引用对象
- 匿名内部类使用一次,不能再使用
内部类实现接口
public class Happy {
public static void main(String[] args) {
May may = new May();
may.Banaer();
}
}
class May{
public void Banaer(){
System.out.println("外部类输出");
Apple a = new Apple() {
@Override
public void Orange() {
System.out.println("内部类输出");
}
};
a.Orange();
}
}
interface Apple{
public void Orange();
}
内部类继承类
public class Happy {
public static void main(String[] args) {
May may = new May();
may.Banaer();
}
}
class May{
public void Banaer(){
System.out.println("外部类输出");
Orange orange = new Orange(){
@Override
public void Apple() {
super.Apple();
}
};
orange.setName("小王");
orange.Apple();
}
}
class Orange{
private String name;
public Orange() {
}
public void Apple(){
System.out.println("父类输出"+getName());
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
匿名内部类本身就是一个引用对象,可以直接调用方法;
public class Mongo {
public static void main(String[] args) {
Five may = new Five();
may.Lemon();
}
}
class Five{
public void Lemon(){
new Juice("小王"){
}.mm();//直接调用方法
}
}
class Juice{
public Juice(String name) {
System.out.println("父类输出"+name);
}
public void mm(){
System.out.println("父类的其他方法");
}
}