面向对象(匿名内部类重写多个方法调用)

①匿名内部类只针对重写一个方法的时候使用;

②若有多个方法,通过匿名内部类进行调用的时候,需要一个一个进行调用,比较麻烦,所以不建议使用。

③匿名内部类是无法向下转型的,向下转型需要子类的类名,这里面没有子类的类名,完全是通过父类去做的

package Demo_nimingneibulei;

public class Demo2_NoName {

    public static void main(String[] args) {
        Outer2 wsq = new Outer2();
        wsq.method();
    }

}

interface Inter2{                               //父类
    public void show1();
    public void show2();
}

//匿名内部类只针对重写一个方法的时候使用
class Outer2 {
    public void method(){                           //匿名内部类要写到方法里
        /*                                          //若有多个方法,用匿名内部类去调用,需要调用多次,比较麻烦
          new Inter2(){
            public void show1(){
                System.out.println("show1");
            }
            public void show2(){
                System.out.println("show2");
            }
        }.show1();
         new Inter2(){
            public void show1(){
                System.out.println("show1");
            }
            public void show2(){
                System.out.println("show2");
            }
        }.show2();
        若有多个方法,通过匿名内部类进行调用的时候,需要一个一个进行调用
        */
        Inter2 i =  new Inter2(){               //从   new开始到;  全部都是子类对象; 父类引用指向子类对象,new Inner2(){...}; 整块代表子类对象
            public void show1(){                //子类对象中的show1方法
                System.out.println("show1");
            }
            public void show2(){                //子类对象中的show2方法
                System.out.println("show2");
            }

            public void show3(){                //在子类对象里面,又重新定义一个自己特有的方法show3()
                System.out.println("show3");
            }

        };
        i.show1();                              //编译看的是接口中的show1方法,接口中有show1方法,编译成功,程序继续进行,运行看的是子类对象里面的show1方法
        i.show2();                              //编译看的是接口中的show2方法,接口中有show2方法,编译成功,程序继续进行,运行看的是子类对象里面的show1方法

//      i.show3();                              //编译错误,编译看的是父类,是接口里面,而接口里面并没有show3方法,所以编译错误,程序报错        
                                                //匿名内部类是无法向下转型的,向下转型需要子类的类名,这里面没有子类的类名,完全是通过父类去做的

    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beyond谚语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值