初学者对java内部类的学习

java内部类分为1.成员内部类2.静态内部类 3.局部内部类 4.匿名内部类

1.成员内部类:直接定义在类中的内部类,作为外部类的成员,可以访问外部类的所有成员,包括静态和非静态的成员。但是外部类和外部类以外的其他类要访问成员内部类的成员和方法就必须要依靠对象来调用。要创建内部类的成员必须要先创建外部类的成员:Outter.Inner inner=new Outter().new Inner().

需要注意的是成员内部类的访问修饰符和类的属性和方法一样可以被public private protected 修饰,但是类只有包内访问权限和public 访问权限。成员内部类中不能有任何静态的属性和方法。

2.静态内部类:静态内部类中可以有静态 和非静态的属性和方法,可以通过外部类.属性(方法)访问内部类中静态的属性和方法。外部类要访问内部类的静态属性和方法也不需要创建对象,可通过Ouuter.Inner.属性(方法)直接调用静态内部类的静态方法,非静态方法必须要创建对象 Outter.Inner inner=new Outter.Inner()。

3.局部内部类,就是定义在外部类方法中的内部类。方法体中的内部类不能访问 方法体中的局部变量,除非是final 修饰的,但是可以访问成员变量。要从外部访问局部内部类 需要

在方法体重创建局部内部类的对象,然后在方法中调用;比如说 void a(){ class Inner{int a;void f(){System.out.println("局部内部类的方法");}};要调用局部内部类的方法,可以再a方法中加:Inner inner=new Inner();inner.f();inner.age,然后利用外部类的对象调用这个方法体就可以了。

4.匿名内部类

当一个类定义出来只在定义时使用一次时,可以将该类定义为匿名内部类,在实现匿名内部类的对象的时候可以借助其父类或者父接口的名字。

public abstract class A{ abstract void show();}  class B{   public static void main(String [] args){ A a= new A(){

void show() {
System.out.println("这是一个匿名内部类");
};

a.show();}}它如果要引用所在方法的局部变量和局部内部类是一样的。被引用的局部变量都必须被定义为常量(final).

猜你喜欢

转载自blog.csdn.net/yyo201/article/details/51175553