10.4匿名内部类
匿名內(nèi)部類:沒有類名的類就稱作為匿名內(nèi)部類。
匿名內(nèi)部類的好處:簡化書寫。
匿名內(nèi)部類的好處:簡化書寫。
匿名內(nèi)部類的使用前提:必須存在繼承或者實(shí)現(xiàn)關(guān)系才能使用。
abstract class Animal {public abstract void run(); } class Outer {public void print(){//需求:在方法內(nèi)部定義一個(gè)類繼承Animal類,然后調(diào)用run方法。//方法一:定義一個(gè)局部內(nèi)部類解決//方法二: 使用匿名內(nèi)部類簡化書寫/*class Dog extends Animal{public void run(){System.out.println("狗在跑--");}}Dog dog = new Dog();dog.run();*///匿名內(nèi)部類:匿名內(nèi)部類只是內(nèi)有類名,,其他的成員函數(shù)都是具有的。new Animal(){//匿名內(nèi)部類與原Animal類是繼承 的關(guān)系public void run(){System.out.println("狗在跑--");}// 匿名內(nèi)部類擁有自定義特有的方法public void bite(){System.out.println("狗在咬人--");}} .bite();} } class AnonymousInnerClass {public static void main(String[] args) {Outer outer = new Outer();outer.print();} }
需求2:在方法內(nèi)部定義一個(gè)類繼承Animal類,然后調(diào)用run和sleep方法。
修改如下
abstract class Animal {public abstract Animal run();public abstract void sleep(); } class Outer {public void print(){//需求:在方法內(nèi)部定義一個(gè)類繼承Animal類,然后調(diào)用run方法。//需求2:在方法內(nèi)部定義一個(gè)類繼承Animal類,然后調(diào)用run和sleep方法。//方法一:定義一個(gè)局部內(nèi)部類解決//方法二: 使用匿名內(nèi)部類簡化書寫/*class Dog extends Animal{public void run(){System.out.println("狗在跑--");}public void sleep(){System.out.println("狗在睡覺--");}}Dog dog = new Dog();dog.run();dog.sleep();*///匿名內(nèi)部類:匿名內(nèi)部類只是內(nèi)有類名,,其他的成員函數(shù)都是具有的。/*new Animal(){//匿名內(nèi)部類與原Animal類是繼承 的關(guān)系public Animal run(){System.out.println("狗在跑--");return this;}// 匿名內(nèi)部類擁有自定義特有的方法public void bite(){System.out.println("狗在咬人--");}public void sleep(){System.out.println("狗在咬人--");}} .run().sleep();*/Animal a = new Animal(){//匿名內(nèi)部類與原Animal類是繼承 的關(guān)系public Animal run(){System.out.println("狗在跑--");return this;}public void bite(){System.out.println("狗在咬人--");}public void sleep(){System.out.println("狗在咬人--");}};a.run();a.sleep();} } class AnonymousInnerClass {public static void main(String[] args) {Outer outer = new Outer();outer.print();} }
總結(jié)
- 上一篇: 10.3局部内部类
- 下一篇: 10.4 实现关系下的匿名内部类