java9-9 匿名内部类
1、
匿名内部类
就是内部类的简化写法。
前提:存在一个类或者接口
这里的类可以是具体类也可以是抽象类。
格式:
new 类名或者接口名(){
重写方法;
}
new Xxx()是创建了一个对象,而抽象类和接口不能被new修饰,
所以,这里的东西的本质已经变了
那么,本质是什么呢?
是一个继承了该类或者实现了该接口的子类匿名对象。
1 interface Inter4{ 2 public abstract void show(); 3 public abstract void show2(); 4 } 5 6 class Outer4{ 7 8 public void method(){ 9 10 Inter4 i = new Inter4(){ 11 //这个匿名内部类是inter接口的匿名实现类 inter i =new Xxx(); 12 //这段就是Xxx(); 13 14 //重写接口中的方法 15 public void show(){ 16 System.out.println("show"); 17 } 18 public void show2(){ 19 System.out.println("show2"); 20 } 21 }; 22 i.show(); 23 i.show2(); //调用show()方法 24 } 25 } 26 class InnerClassDemo4 { 27 public static void main(String[] args) { 28 //调用上面的类 29 Outer4 o = new Outer4(); 30 31 o.method(); 32 } 33 }
2、匿名内部类在开发中的使用
1 interface Person { 2 public abstract void study(); 3 } 4 5 class PersonDemo { 6 //接口名作为形式参数 7 //其实这里需要的不是接口,而是该接口的实现类的对象 8 public void method(Person p) { 9 p.study(); 10 } 11 } 12 13 //实现类 14 class Student implements Person { 15 public void study() { 16 System.out.println("好好学习,天天向上"); 17 } 18 } 19 20 class InnerClassTest2 { 21 public static void main(String[] args) { 22 //测试 23 PersonDemo pd = new PersonDemo(); 24 Person p = new Student(); 25 pd.method(p); 26 System.out.println("--------------------"); 27 28 //匿名内部类在开发中的使用 29 //匿名内部类的本质是继承类或者实现了接口的子类匿名对象 30 pd.method(new Person(){ 31 public void study() { 32 System.out.println("好好学习,天天向上"); 33 } 34 }); 35 } 36 }
3、
匿名内部类面试题:
按照要求,补齐代码
1 interface Inter { void show(); } 2 class Outer { //补齐代码 } 3 class OuterDemo { 4 public static void main(String[] args) { 5 Outer.method().show(); 6 } 7 }
要求在控制台输出”HelloWorld”
何事都只需坚持..
难?
维熟尔。
LZL的自学历程...只需坚持