怎么在Java中使用内部类

  介绍

怎么在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 ();   ,,}   }

运行结果:


高于10

1。静态内部类不能随意访问外部类的实例成员,必须引用外部类的对象。
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中使用内部类