首页 > 编程知识 正文

java中的内部类和匿名内部类,匿名类和内部类的区别

时间:2023-05-06 05:46:36 阅读:62891 作者:2431

内部类 :

在一个a类内部定义另一个b类,a类称为外部类,b类称为内部类

内部类 :成员内部类vs本地内部类3358www.Sina.com/静态(成员)内部类vs非静态(成员)内部类

成员内部类 :

继承父类,使其可以在接口类内部具有类的成员。内部类作为类:

可以使用静态限定的四种权限修饰符的内部类是外部类的成员(属性、方法) http://www.Sina.com/http://www.Sina.com/http://www.Sina.com/Nene

3358 www.Sina.com/http://www.Sina.com/外部类名.类变量名称、静态方法(仅调用外部类的类变量和静态方法) http://www.Sina.com /外部类

作为类的成员:

//外部类class number { public string type=' number '; 公共静态输入age=5; 公共void show ((system.out.println ) ) numbershow ); }公共静态void test (() system.out.println ) ) numbertest ); //非静态内部类-可以调用外部类的静态和非静态方法,实例变量和类变量class A {int age=20; public void info () system.out.println ) ainfo ' number.this.type ' number.this.age ); //system.out.println(age''type; //调用外部类的方法//Number.this.show (; //Number.this.test (; (//静态内部类-外部类的静态方法和类变量static classb (public void info ) ) system.out.println (binfo ' number.age ); //外部类的静态方法Number.test (; } } publicclassinnerclasstest { publicstaticvoidmain (string [ ] args (/1 .创建非静态内部类的对象//创建非静态内部类的对象numbbbase a.info (; 系统. out.println---------------------------------------------------- -。 ------------------------------------------.---------------------------------------------- //创建静态内部类的对象Number.B b=new Number.B (; b.info (; 系统. out.println---------------------------------------------------- -。 ------------------------------------------.---------------------------------------------- innerclasstestict=newinnerclasstest (; ict.test (; myinterfacemyinterface=ICT.test2(; //可以获取局部内部类的对象,但不能向下转型。 my接口. info (; }/* *如何获取局部内部类的对象? */public MyInterface test2() classcimplementsmyinterface (public void info ) ) system.out.prinnface } return new c (; }publicvoidtest((//局部内部类classc ) publicvoidinfo ) ) system.out.println ) ) testmethodinfo ); }}new C ().info ); } }接口my接口{ void info (; }执行结果:

学习目标:

匿名内部类必须继承父类。 或者,实现接口的匿名内部类只能有一个对象。 匿名内部类对象使用多态性表示接口接口接口{ void add (inta,int b ); } publicclassanonymoustest { publicstaticvoidmain { string [ ] args } { classcomputerimplementsmyinterface } public void add { id } //类实现my接口的匿名实现类的对象myinterfacecomputer=newmyinterface () publicvoidadd(inta,int b ) { system. 可以在alt /new MyInterface () /中创建此接口实现类的对象@overridepublicvoidadd(inta,int b )//todo auto-generation 如果//形引用是接口类型,则实现引用是接口实现类的对象publicstaticvoidtest (myinterfacemi ) mi.add ) 5,10 ); }运行结果:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。