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”

posted @ 2016-09-11 22:59  卡拉瓦  阅读(219)  评论(0编辑  收藏  举报