Java匿名内部类

导语

学完匿名内部类就懂的情书。bash

// 情书
// 在个人世界你永远18岁
me.world(new You() {  // 在个人世界只有最初的你
            public void getAge() {  // 你的年龄
                System.out.println("18岁");  // 永远18岁
            }
        });
复制代码
主要内容

接口与抽象类和匿名内部类的关系学习

具体内容

匿名内部类也就是没有名字的内部类,正由于没有名字,因此匿名内部类只能使用一次,它一般用来简化代码编写,但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口。ui

为何须要存在有匿名内部类。spa

范例:观察以下代码code

interface Message {
    public void print();
}

class MessageImpl imlements Message {
    public void print() {
        System.out.println("Hello World !");
    }
}

public class TestDemo {
    public static void main(String args[]) {
         fun(new MessageImpl());
    }
    
    public static void fun(Message msg) {
        msg.print();
    }
}
复制代码

输出结果:继承

Hello World !
复制代码

正常的规律就是一个接口或者是抽象类须要有子类,子类要覆写全部的抽象方法。接口

但是若是说如今的MessageImpl子类只使用惟一的一次,那么还有必要将其单独定义为一个类吗?因此这个时候,就能够采用匿名内部类的方式进行代码的简化。get

范例:简化后的代码string

interface Message {
    public void print();
}

public class TestDemo {
    public static void main(String args[]) {
        fun(new Message() {
            public void print() {
                System.out.println("Hello World !");
            }
        });
    }
    
    public static void fun(Message msg) {
        msg.print();
    }
}
复制代码

输出结果:it

Hello World !
复制代码

下面这个代码块就被称为匿名内部类。

{
    public void print() {
        System.out.println("Hello World !");
    }
}
复制代码

使用匿名内部类的时候,有一个前提:必需要基于接口或抽象类的应用。

可是须要强烈强调的是,若是匿名内部类定义在了方法里面,方法的参数或者是变量要被匿名内部类所访问,那么必须加上final关键字(JDK 1.8以后此要求被改变了)。

总结

匿名内部类是在抽象类和接口的基础上发展的,匿名内部类的最大好处是帮助用户减小了类的定义。

欢迎加入学习交流群569772982,你们一块儿学习交流。

相关文章
相关标签/搜索