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, 没有构造方法。
匿名内部类隐式地继承了一个父类或者实现了一个接口。
匿名内部类使用得比较多,通常是作为一个方法参数。