重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本文小编为大家详细介绍“anonymousinnerclass怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“anonymousinnerclass怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
10年积累的成都网站建设、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有长汀免费网站建设让你可以放心的选择与我们合作。
anonymousinnerclass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
匿名内部类在实现时必须借助一个接口或者一个抽象类或者一个普通类来构造,从这过层次上讲匿名内部类是实现了接口或者继承了类,但是不能通过extends或implement关键词来继承类或实现接口。
几点说明:
一、由于匿名内部类没有名字,所以它没有构造函数。因为没有构造函数,所以它必须完全借用父类的构造函数来实例化,匿名内部类完全把创建对象的任务交给了父类去完成。
二、在匿名内部类里创建新的方法没有太大意义,但它可以通过覆盖父类的方法达到神奇效果,如上例所示。这是多态性的体现。
三、因为匿名内部类没有名字,所以无法进行向下的强制类型转换,持有对一个匿名内部类对象引用的变量类型一定是它的直接或间接父类类型。
四、注意匿名内部类的声明是在编译时进行的,实例化在运行时进行。这意味着for循环中的一个new语句会创建相同匿名类的几个实例,而不是创建几个不同匿名类的一个实例。
class Car{
void move(){};
}
interface Person{
void learn();
}
abstract Class Animal{
abstract void eat();
}
public class AnonymousInnerClassDemo {
public static void main(String[] args){
Car car = new Car(){
void move(){
System.out.println("匿名内部类的move()方法");
}
}
car.move();
Person person = new Person(){
void learn(){
System.out.println("匿名内部类的learn()方法");
}
}
person.learn();
Aninal animal = new Animal(){
void eat(){
System.out.println("匿名内部类的eat()方法");
}
}
}
}
读到这里,这篇“anonymousinnerclass怎么用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注创新互联行业资讯频道。