匿名内部类的使用

匿名内部类的使用

为什么需要匿名内部类?

匿名内部类的作用:比如想要创建几个类,但是都只用一次。我们可以不再采用传统的步骤(新建一个类实现接口再重写方法),而是采用匿名内部类,来简化开发。

一、基于接口的匿名内部类

interface AI{	//一个接口ai

void cry( );

}

class Tiger implements AI{	//使用传统方法新建一个类实现接口

@override

pubilc void cry(){

system.out.println("老虎叫");

}

}

class outer {	//一个外部类

public void method(){   //一个方法
    
    Tiger tiger = new Tiger();  	//使用传统方法创建一个tiger并调用方法
    tiger.cry(); 
    
    AI taiger  = new AI(){		//采用匿名内部类实现
        @override 
        public void cry(){
            system.out.println("老虎叫");
        }
    }

}

}

那么匿名内部类的底层是什么东西呢

AI taiger  = new AI(){		//采用匿名内部类实现
        @override 
        public void cry(){
            system.out.println("老虎叫");
        }
    }

///底层逻辑
	class outer$1 implements AI(){	//匿名内部类的名字就是外部类的名字加一个$
        @override 
        public void cry(){
            system.out.println("老虎叫");
        }
    }

二、基于类的匿名内部类

class Father {
    public Father (String name){	//构造器
        
    }
    public void test(){			    //方法
        
    }
}

class outer {	//一个外部类
    public void method(){   //一个方法
    
    Tiger tiger = new Tiger();  	//使用传统方法创建一个tiger并调用方法
    
    Father father = new Father("jack"){		//匿名内部类就是加个(大括号;)			
    };

}

他的底层逻辑就是

class outer$2 extends Father(){
    
}

new这个东西会返回一个对象,Father("jack"){ };创建了一个匿名内部类outer$2,然后被new返回给father。所以,father的编译类型是Father,运行类型是outer$2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值