内部类的复习

内部类分为4种:

1.成员内部类;

2.静态成员内部类;

3。局部内部类;

4.匿名内部类

成员内部类:它是作为一个外部类的一部分,它是可以调用外部成员,但外部类不能直接调用它::

class Outer{

  int x=3;

  class Inner{

    public void show(){

      System.out.println("x"+x);

    }

  }

}

public class test{

  public static void main(String[] args){

    Outer.Inner in=newOuter().newInner();

    in.show();

  }

}

静态内部类:随着类的加载而加载

class Outer{

  int x=3;

  class Inner{

    public void show(){

      System.out.println("x"+x);

    }

  }

}

public class test{

  public static void main(String[] args){

    Outer.Inner in=Outer.newInner();

    in.show();

  }

}

局部内部类:因为不同变量的周期不同,调用变量结果也不一样

class Outer{

  //final int x=1;

  public void methoh(){

    int x=3;

    class Inner{

      int x=4;

      public void show(){

        System.out.println("x"+x);

      }

    }

    new Inner().show();

  }

}

public class test{

  public static void main(String[] args){

   Outer out=new Outer();

  out.methoh();

  }

}

内部类的继承: 可以实现在局部内部类中有多个方法被使用时,可以向上转型后通过创建父类对象来统一调用

abstract class Inter{

  abstract void show();//抽象类

}

class Outer{

  int x=1;

  public void methoh(){

    int x=3;

    class Inner extends Inter{

      int x=4;

      public void show(){

        System.out.println("x"+x);

      }

    }

    //返回个Inner给父类Inter

    public Inter getInner(){

      return new Inner();

    }

    //子类Inner向上转型,然后调用子类show()方法

    new Inter().show();

  }

}

public class test{

  public static void main(String[] args){

    Outer out=new Outer();

    out.methoh();

  }

}

匿名内部类: 可以简化一些只被加载一次的类调用的代码

abstract class Inter{

  abstract void show();//抽象类

}

class Outer{

  int x=1;

  public void methoh(){

    int x=3;

    new Inter(){

      public void show(){

        System.out.println("x"+x);

      }.show();

    }

  }

}

public class test{

  public static void main(String[] args){

    Outer out=new Outer();

    out.methoh();

  }

}

 

posted @ 2016-07-28 22:18  对与错  阅读(94)  评论(0编辑  收藏  举报