介绍
怎么在Java中使用内部类?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
Java是什么
Java是一门面向对象编程语言,可以编写桌面应用程序,网络应用程序,分布式系统和嵌入式系统应用程序。
<强>一、非静态内部类强>
public class OutClass { private 才能String name =,“outclass"; public 才能;void 显示(),{ ,,,System.out.println (this.name); ,,} public 才能;void  innerShow (), { ,,,InnerClass inner =, new InnerClass (); ,,,inner.show (); ,,,inner.outShow (); ,,}//才能,非静态内部类 class 才能;InnerClass  { ,,,//,2.0非静态内部类不能有静态变量的声明 ,,,//,public static int 年龄=0; ,,,private String name =,“innerclass"; ,,,public void 显示(),{ ,,,,,System.out.println (this.name); ,,,} ,,,public void outShow (), { ,,,,,//,3.0内部类做为外部类的实例成员,可以随意访问其他外部类成员 ,,,,,System.out.println (OutClass.this.name); ,,,} ,,} public 才能;static  void main (String [], args), { ,,,OutClass out =, new 远高于(); ,,,out.show (); ,,,out.innerShow (); ,,,//,1.0下面一行编译报错,静态方法无法访问这指针 ,,,//,因为等同于this.InnerClass 内在=new this.InnerClass (); ,,,//,InnerClass 内在=new InnerClass (); ,,} }
运行结果:
高于
引用>
innerclass
高于1。外部类不能直接访问非静态内部类,必须在外部类中保存内部类的引用间接访问。
2。非静态内部类中不能有静态属性。个人理解:非静态内部类是外部类的实例成员,它属于外部类的实例对象所拥有,若内部类有静态属性,那么属性必定属于内部类所有,即所有的内部类实例对象都共享这个属性。但是这个内部类已经属于外部类的实例对象所拥有了,貌似是1:1的关系,除非外部类的对象保存了n多份内部类实例的引用,那这样内部类的静态属性才有存在的必要的,可这么做就没有什么意义了。
3。非静态内部类可以随意访问外部类的成员,因为它们都是外部类的成员,等级一样。
4。若要得到内部类的实例,可以
OutClass.InnerClass 内在=new 远高于().new InnerClass ();<强>二、静态内部类强>
public class OutClass { private 才能String name =,“outclass"; private 才能static int  age =, 10;//,才能静态内部类 static 才能class InnerClass  { ,,,public void 显示(),{ ,,,,,//1.0 ,,,,,System.out.println (new 远高于(). name); ,,,} ,,,public void outShow (), { ,,,,,//2.0 ,,,,,System.out.println(年龄); ,,,} ,,} public 才能;static  void main (String [], args), { ,,,//3.0 ,,,OutClass.InnerClass inner =, new OutClass.InnerClass (); ,,,inner.outShow (); ,,,inner.show (); ,,} }运行结果:
引用>
高于101。静态内部类不能随意访问外部类的实例成员,必须引用外部类的对象。
2。静态内部类可以随意访问外部类的类成员。
3。若要获取静态内部类的实例,则形式如OutClass.InnerClass 内在=new OutClass.InnerClass ();注意与非静态内部类获取实例的区别:
OutClass.InnerClass 内在=new 远高于().new InnerClass ();<强>三、局部类强>
<强> 1。匿名内部类强>
interface IDraw { void 才能画(); } public class  OutClass { public 才能;void  createCircle (IDraw obj), { ,,,obj.draw (); ,,} public 才能;static  void main (String [], args), { ,,,OutClass out =, new 远高于(); ,,,out.createCircle (new IDraw (), { ,,,,,public void 画(),{ ,,,,,,,System.out.println(“我# 39;m 画…“); ,,,,,} ,,,}); ,,} }怎么在Java中使用内部类