java内部类

java内部类 顾名思义定义在内部的类

java内部类分为四种:

  1.静态内部类(static inner class

  2.成员内部类(member inner class

  3.局部内部类(local inner class

  4.匿名内部类(anonymous inner class

 

一、静态内部类

 

 public class Test{

    //定义静态内部类

     public static class SubTest{

        public void method1(){

          system.out.print("静态内部类里的方法"); 

        }

    }

    public void test3(){

      system.out.print("这是普通的方法");

    }

  }

 

    静态内部类特性

  静态内部类可以访问外部类的任一静态字段或静态方法(只能访问的)

  像静态方法一样,静态类有public/private/default 权限修饰符

二、成员内部类

 

 public class Test{

    //定义成员内部类

     public static class SubTest{

        public void method1(){

          system.out.print("成员内部类里的方法"); 

        }

    }

    public void test3(){

      system.out.print("这是普通的方法");

    }

  }

  class a{

    public static void main(String[] args){

      //实例化内部类的方法

      Test.SubTest  a = new Test().new SubTest();

    }

  }

 

 

 

  成员内部类的特性  

   类似于外部类的实例函数,成员类有public/private/default权限修饰符 
  一个成员类实例必然所属一个外部类实例,成员类可访问外部类的任一个实例字段和实例函数。 

三、局部内部类

 

 public class Zhengshu{

    public void sharenzheng(){

      system.out.println("杀人证");


    }

  }

  public class PliseMan{

    public void sharen(){

      system.out.print("失误,错杀人了");

      //定义一个局部内部类(方法内部类)

      Zhengshu zz = new Zengshu();

      zz.sharenzheng();

      system.out.println("我不用负责!!");

    }    

  }

 

  局部内部类的特性  

     局部内部类定义在方法中,比方法的范围还小。是内部类中最少用到的一种类型。

 

      像局部变量一样,不能被public, protected, private和static修饰。

 

      只能访问方法中定义的final类型的局部变量。

 

      局部内部类在方法中定义,所以只能在方法中使用,即只能在方法当中生成局部内部类的实例并且调用其方法。

 

 

四、匿名内部类(重点)

  

public interface aaaa{

    public void do();

  }  

  public class test{

    public static void main(String[] args){

      //使用匿名内部类

      aaaa  b = new aaaa(){

        //实现aaaa接口的方法

        public void do(){

          system.out.print("doing");

        }

      };

    }

  }

 

  匿名内部类的特性

    匿名类是一种特殊的局部类。局部类的特性与约束都适用与它    

     匿名内部类就是没有名字的局部内部类,不使用关键字class, extends, implements, 没有构造方法。

 

     匿名内部类隐式地继承了一个父类或者实现了一个接口。

 

     匿名内部类使用得比较多,通常是作为一个方法参数。

 

 

 

 

 

posted @ 2016-11-16 20:04  很酷又爱笑  阅读(144)  评论(0编辑  收藏  举报