java学习笔记day06---匿名内部类
2014-10-26 17:50
489 查看
1.匿名内部类:其实就是内部类的简化形式,它所体现的就是一个类或者接口的子类对象。
前提:
内部类必须继承或实现外部类或接口。
格式:
new 父类&接口(){};
其实就是一个子类对象,用{};结束
匿名内部类在程序中的体现形式有三种:
1.父类为普通的类
2.父类为抽象类(子类中一定要覆盖抽象方法)
3.父类为接口interface
什么时候使用匿名内部类?
当函数的参数是一个接口类型时,该接口中的方法不超过3个的时候(因为方法过多时,产生匿名内部类的方法就变得太臃肿了),为了简化代码,将匿名内部类作为参数进行传递。
前提:
内部类必须继承或实现外部类或接口。
格式:
new 父类&接口(){};
其实就是一个子类对象,用{};结束
匿名内部类在程序中的体现形式有三种:
1.父类为普通的类
class Inter{ } class OuterTest{ public static void function(){ new Inter(){ private int num = 9; void show(){ System.out.println("这是Inter子类的成员变量num="+num); } }.show(); /* 若改以上代码为:编译时就会报错了,因为编译时检查左边类型Inter类中并没有show()方法 Inter in = new Inter(){}; in.show(); */ } } class MyOuterDemo { public static void main(String[] args) { OuterTest.function(); } }
2.父类为抽象类(子类中一定要覆盖抽象方法)
2.父类为抽象类(子类中一定要覆盖抽象方法) abstract class Test{ abstract void show(); } class Outer{ int x = 8; /* 这是匿名内部类的完整形式 class Inter extends Test{ void show(){ System.out.println(x); } } */ public void method(){ //new Inter().show(); Test t = new Test(){ void show(){ System.out.println("x="+x); System.out.println("这是覆盖Test抽象类中的方法,因为子类继承它就必须覆盖"); } void show1(){ System.out.println("这是Test子类自己的方法"); } }; t.show(); //t.show1();运行这个里会报错,因为Test抽象类中并没有show1()方法 } } class OuterInterDemo { public static void main(String[] args) { new Outer().method(); } }
3.父类为接口interface
interface Inter{ void show(); } class Outer{ static Inter method(){ return new Inter(){ public void show(){ System.out.println("show run"); } }; } } class OuterTest1 { public static void main(String[] args) { Outer.method().show(); /* 上面一句,相当于: Inter in = Outer。method(); in.show(); */ } }
什么时候使用匿名内部类?
当函数的参数是一个接口类型时,该接口中的方法不超过3个的时候(因为方法过多时,产生匿名内部类的方法就变得太臃肿了),为了简化代码,将匿名内部类作为参数进行传递。
相关文章推荐
- 【学习笔记15】java面向对象-匿名内部类
- 匿名内部类学习笔记InnerClassDemo4.java
- Java学习笔记57. 再谈接口,兼论匿名内部类
- Java学习笔记15(面向对象八:匿名对象、内部类)
- Android(java)学习笔记75:匿名内部类的方式实现多线程程序
- JAVA匿名内部类(学习笔记)
- java学习笔记21——匿名内部类
- 【Java学习笔记之二十六】深入理解Java匿名内部类
- 2)Java学习笔记:匿名内部类
- 【Java学习笔记之二十六】深入理解Java匿名内部类
- 【Java学习笔记之二十六】深入理解Java匿名内部类
- java匿名内部类 学习笔记
- Java基础学习笔记十 Java基础语法之final、static、匿名对象、内部类
- Java学习笔记-匿名内部类
- 匿名内部类学习笔记InnerClassTest.java
- java学习笔记(六)之匿名内部类
- java学习笔记——匿名内部类
- 黑马程序员--Java学习笔记之面向对象思想(多态、内部类、匿名内部类、异常类)
- java学习笔记(5)——内部类
- Java学习笔记——内部类及其调用方法