java匿名内部类写法,java中的匿名类
00-1010一、内部类什么是内部类成员的访问特征二。如何使用匿名内部类的前提格式
目录
00-1010在另一个类B中定义一个类A,称为内类和外类。
一、内部类
成员内部类 :定义在类中方法外的类。
定义格式:
类外部类{类内部类{}}
描述事物时,如果一个事物内部包含其他事物,可以使用内部类的结构。例如,计算机类Computer包含Cpu类,此时,Cpu可以由内部类描述并定义在成员位置。
代码举例:
类计算机{//外部类类Cpu {//内部类}}
00-1010内部类可以直接访问外部类的成员,包括私有成员。为了让外部类访问内部类的成员,需要建立一个内部类的对象。创建内部类对象格式:
外部类名。内部类名对象名=新的外部类()。新的内部类();
访问演示,代码如下:
定义类:
公共类Person { private boolean live=true;Class Heart {public void jump() {//直接访问外部类成员if(live){ system . out . println( Heart is beating );} else {System.out.println(我的心不跳);} } }公共布尔is live(){ return live;} public void set live(boolean live){ this . live=live;} }定义测试类:
类内部demo { public static void main(string[]args){//创建外部类对象Person p=new Person();//创建内部类对象Heart Heart=p . new Heart();//调用内部类方法heart . jump();//调用外部类方法p . set live(false);//调用内部类方法heart . jump();} }输出结果:
我的心在跳动。我的心脏不跳了。
内部类还是独立类。编译后,内部类将被编译成独立的。类文件,但它前面是类名和外部类的$符号。例如,Person$Heart.class
00-1010匿名内类:是内类的简化写法。它的本质是一个匿名的子类对象,有一个具体的父类或父接口。最常用的内部类是匿名内部类。以接口为例。当你使用一个界面时,似乎你必须做以下几个步骤:3360
在子类重写接口中定义方法,创建子类对象,调用重写的方法。我们的目的是最后调用方法,那么能不能简化一下,把上面四个步骤合并成一个步骤?匿名类是做到这一点的捷径。
00-1010匿名内部类必须继承父类或实现父接口。
什么是内部类
新的父类名或接口名(){//方法覆盖@Overridepublic void方法(){//执行语句} };
成员内部类
以接口为例,匿名内部类的使用,代码如下:
定义接口:
公共抽象类FlyAble{公共抽象void fly();}创建匿名内部类,并调用:
类内部演示{ public static void main(string[]args){/* * 1。等号右边的3360是一个匿名的内部类,它定义并创建了接口的子类对象。2.3360等号左边是多态赋值,类型引用指向子类object */flyable f=new flyable(){ public void fly(){ system . out . println(芜湖,腾飞!);} };//调用fly方法,执行重写后的方法f . fly();}}通常,当方法的形参是接口或者抽象类时,匿名内部类也可以作为参数传递。
代码如下:
类内部demo 2 { public static void main(string[]args){/* * 1。等号右边的3360是一个匿名的内部类,它定义并创建了接口的子类对象。2.3360等号左边是多态赋值,类型引用指向子类object */flyable f=new flyable(){ public void fly(){ system . out . println(芜湖,腾飞!);} };//在showFly方法中将f传递给show fly(f);} public static void show fly(FlyAble f){ f . fly();} }以上两步,也可以简化为一步,代码如下:
class inner demo 3 { public static void main(string[]args){/* *创建一个匿名内部类,直接传递给show fly(flyable f)*/show fly(new flyable(){ public void fly(){ system . out . println(芜湖,起飞!);} });} public static void show fly(FlyAble f){ f . fly();} }执行输出如下:
芜湖,起飞!
关于Java内部类和匿名内部类的这篇文章到此为止。关于Java匿名内部类的更多信息,请搜索以前关于流行IT的文章或继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。