疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java 内部类,匿名内部类


 

     以下内容由广州Java培训为你整理,Java 内部类分为4种:

  1)静态内部类:static修饰的类叫做静态类,把静态类放到一个类的内部,就叫做静态内部类

  特点:可以访问外界:静态方法/静态属性,不能访问实例资源

  案例:

  import inner.Foo.Koo;//一定要把Koo静态内部类导入进来

  public class Demo9 {

  public static void main(String[] args) {

  Koo koo = new Koo();

  koo.add();

  }

  }

  class Foo{

  int a = 12;//实例变量

  static int aa=16;

  public static void show(){ System.out.println("静态的方法");}

  //静态内部类

  static class Koo{

  public void add(){

  // System.out.println(a); 静态内部类不能访问实例资源(变量)

  System.out.println(aa);

  show();//静态内部类可以访问外界的静态属性和方法

  }

  }

  }

  2)成员内部类:在一个类的内部,直接定义了一个不用static修饰的类,当创建成员内部类对象的时候,外部类要先创建出来。

  特点:成员内部类,可以访问外界的属性和方法

  案例:

  import inner.Foo1.Koo1;

  public class Demo10 {

  public static void main(String[] args) {

  //Koo1 koo1 = new Koo1();要创建成员内部类,则必须要先创建外部类对象

  Foo1 foo1 = new Foo1();

  //记住(笔试会考)

  Koo1 koo1 = foo1.new Koo1();

  koo1.show();

  }

  }

  class Foo1{

  int a =12;

  static int aa = 16;

  class Koo1{

  void show(){

  System.out.println(a+" , "+aa);

  }

  }

  }

  3)局部内部类:使用非常的少,特点在一个方法内定义一个类(企业开发中及其少用)

  特点:局部内部类,在引用外界的变量,该变量必须要使用final修饰

  案例:

  public class Demo11 {

  public static void main(String[] args) {

  final int a = 12;

  final int b = 13;

  class Foo2{

  int c = 16;

  public int add(){

  //在局部内部类中,引用外界的变量,则变量必须用final修饰

  return a+b+c;

  }

  }

  Foo2 foo2 = new Foo2();

  System.out.println(foo2.add());

  }

  }

  4)匿名内部类:对原来的类的一个继承

  特点:跟接口/抽象类结合使用

  eg new 类名/接口名 {

  重写方法

  };

  案例:

  public class Demo1 {

  public static void main(String[] args) {

  Koo koo = new Koo(){

  //可以重写方法

  public String toString() {

  return "生成了一个Koo的对象";

  }

  //在匿名内部类里面不可以创建新的方法

  //public void show(){

  //System.out.println("liu");

  //}

  };

  System.out.println(koo);

  //koo.show();

  }

  }

  class Koo{

  } 

 

  疯狂Java是广东口碑最好的Java,简单易学,高薪就业,国内最著名的作者和最强实战讲师授课,整体就业率高达95%,在Java软件培训行业遥遥领先。如需了解更多详情,抢座热线:020-28309358,020-28309378    咨询QQ:707552864,544627560