目录
一:Java内部类详解
成员内部类:声明一个新 class 类,作为该类的一个成员
局部内部类:在一个方法内部,重新声明一个类
静态内部类:static 修饰内部类
匿名内部类:java提高篇-----详解匿名内部类 :https://www.cnblogs.com/chenssy/p/3390871.html#4232300
构造代码块 —— 依托于构造方法的执行
静态代码块 —— 依托于类的加载
核心作用:
接口只是解决了部分问题,而内部类使得多重继承的解决方案变得更加完整
二:匿名内部类
1.不能在初始化类括号里面传递参数
2.方法体内使用参数限制:
匿名内部类,并且希望它使用一个其外部定义的参数:
简单理解就是,拷贝引用,为了避免引用值发生改变,例如被外部类的方法修改等,而导致内部类得到的值不一致,于是用final来让该引用不可改变。
例子:
public abstract class Bird {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract int fly();
}
public class Test {
public void test(Bird bird){
System.out.println(bird.getName() + "能够飞 " + bird.fly() + "米");
}
public static void main(String[] args) {
Test test = new Test();
test.test(new Bird() {
public int fly() {
return 10000;
}
public String getName() {
return "大雁";
}
});
}
}
public class WildGoose extends Bird{
public int fly() {
return 10000;
}
public String getName() {
return "大雁";
}
}
WildGoose wildGoose = new WildGoose();
test.test(wildGoose);