4.4.4 匿名内部类

7 篇文章 0 订阅

内部类

内部类Cat实现了Animal接口,在调用animalShout()方法时,将Cat类的实例对象作为参数传入到方法中,输出结果。

 //定义Animal接口
 interface Animal {
     void shout();   //定义抽象方法shout()
 }
 ​
 //定义测试类
 public class InnerClass {
     public static void main(String[] args) {
         //定义一个内部类Cat实现Animal接口
         class Cat implements Animal{
             //实现shout方法
             public void shout(){
                 System.out.println("喵喵...");
             }
         }
         animalShout(new Cat());     //调用animalShout()方法并传入Cat对象
     }
     //定义静态方法animalShout()
     public static void animalShout(Animal an){
         an.shout();     //调用传入对象an的shout()方法
     }
 }

运行结果:喵喵...


匿名内部类

  • 格式

new 父类(参数列表) 或 父接口(){
     //匿名内部类实现部分
 }

匿名内部类在实现父类方法或者接口的时候直接创建了对象。

匿名内部类一般当作参数直接写在其他方法的参数里面,如下例子就是直接写在了方法的参数里面。

 //定义Animal接口
 interface Animal {
     void shout();   //定义抽象方法shout()
 }
 ​
 //定义测试类
 public class AnonymousInnerClass {
     public static void main(String[] args) {
         //定义匿名内部类作为参数传递给animalShout()方法
         animalShout(new Animal() {
             //实现shout()方法
             public void shout(){
                 System.out.println("喵喵...");
             }
         });
     }
     //定义静态方法animalShout()
     public static void animalShout(Animal an){
         an.shout();     //调用传入对象an的shout()方法
     }
 }

上述匿名内部类的使用可以分解为如下两步

  1. 在调用animalShout()方法时,在方法的参数位置写上new Animal(){},相当于创建了一个实例对象,这个实例对象是Animal的子类实例。并将这个对象作为参数传递给animalShout()方法。此时这个子类是匿名的

     animalShout(new Animal( ){ });

  2. 在大括号中编写匿名子类的实现代码如下:

    animalShout(new Animal() {
                 //实现shout()方法
                 public void shout(){
                     System.out.println("喵喵...");
                 }
             });

匿名内部类是接口的简便写法,但是不一定非要使用这种方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值