导语
学完匿名内部类就懂的情书。
// 情书
// 在我的世界你永远18岁
me.world(new You() { // 在我的世界只有最初的你
public void getAge() { // 你的年龄
System.out.println("18岁"); // 永远18岁
}
});
主要内容
- 接口与抽象类和匿名内部类的关系
具体内容
匿名内部类也就是没有名字的内部类,正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写,但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口。 为什么需要存在有匿名内部类。
**范例:**观察如下代码
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子类只使用唯一的一次,那么还有必要将其单独定义为一个类吗?所以这个时候,就可以采用匿名内部类的方式进行代码的简化。
**范例:**简化后的代码
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();
}
}
输出结果:
Hello World !
下面这个代码块就被称为匿名内部类。
{
public void print() {
System.out.println("Hello World !");
}
}
使用匿名内部类的时候,有一个前提:必须要基于接口或抽象类的应用。 但是需要强烈强调的是,如果匿名内部类定义在了方法里面,方法的参数或者是变量要被匿名内部类所访问,那么必须加上final关键字(JDK 1.8之后此要求被改变了)。
总结
匿名内部类是在抽象类和接口的基础上发展的,匿名内部类的最大好处是帮助用户减少了类的定义。
今天的文章Java匿名内部类分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/13960.html