源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java中关于内部类的使用详解

  • 时间:2020-01-10 06:44 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java中关于内部类的使用详解
[b]内部类访问规则[/b] •内部类可以直接访问外部类中的成员,包括私有。访问格式:外部类名.this •外部类要访问内部类必须创建内部类对象。 •内部类在成员位置上,可以被成员修饰符修饰。
[u]复制代码[/u] 代码如下:
public class InnerClassDemo1 {      public static void main(String[] args){          Outer ou =new Outer();          ou.method();// 4  3          Outer.Inner oi =new Outer().new Inner();          oi.function2();      }  }  class Outer{      private int x=3;      class Inner{          int x=4;          void function1(){              System.out.println(x);              System.out.println(Outer.this.x);          }          void function2(){              Outer.this.method();          }      }      public void method(){          Inner in =new Inner();          in.function1();      }  }
[b]静态内部类[/b] •内部类定义了静态成员,内部类必须是静态的。
[u]复制代码[/u] 代码如下:
/*  注意:内部类定义了静态成员,内部类必须是静态的。  */  class InnerClassDemo2  {      public static void main(String[] args)      {          new Outer.Inner().function();//创建静态内部类对象      }  }  class Outer  {      private static int x=5;      static class Inner//静态内部类 只能访问外部类的静态成员      {          void function()          {              System.out.println("inner:"+x);          }      }  }
[b]局部内部类[/b] •内部类定义在局部时,可以直接访问外部类中的成员。 •访问局部变量必须被final修饰。
[u]复制代码[/u] 代码如下:
/*  内部类定义在局部时:可以直接访问外部类中的成员,因为还持有外类中的引用。  但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量  */  class  InnerClassDemo3  {      public static void main(String[] args)      {          Outer out =new Outer();          out.method(7);      }  }  class Outer  {      int x=3;      public void method(final int a)      {          class Inner          {              void function()              {                  System.out.println(a);              }          }          new Inner().function();      }  }
[b]匿名内部类[/b] •匿名内部类是内部类的简写格式。 •匿名内部类的前提:内部类必须继承一个类或者实现接口。 •匿名内部类不能创建构造函数。
[u]复制代码[/u] 代码如下:
/*  匿名内部类  1.匿名内部类其实就是内部类的简写格式  2.定义匿名内部列的前提。    内部类必须是继承一个类或者实现接口  3.匿名内部类的格式:new 父类或者接口(){定义子类内容}  */  class InnerClassDemo4  {      public static void main(String[] args)      {          Demo d=new Demo()          {              void show()              {                  System.out.println("匿名内部类show方法");              }              void method()              {                  System.out.println("匿名内部类method方法");              }          }.show();          d.method();      }  }  abstract class Demo  {      abstract void show();  }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部