Java中内部类的种类及其使用

Java中的内部类共分为四种:

静态内部类static inner class (also called nested class)

成员内部类memberinner class

局部内部类localinner class

匿名内部类anonymous inner class

静态内部类:

只可以访问外部类的静态成员和静态方法,包括了私有的静态成员和方法

静态内部类与静态内部方法相似,只能访问外部类的static成员,不能直接访问外部类的实例变量与实例方法,只有通过对象引用才能访问。

由于static内部类不具有任何对外部类实例的引用,因此static内部类中不能使用this关键字来访问外部类中的实例成员,但是可以访问外部类中的static成员

静态内部类的对象可以直接生成:Outer.Inner in = newOuter.Inner();

成员内部类:

成员内部类就像一个实例变量。

它可以访问它的外部类的所有成员变量和方法,不管是静态的还是非静态的都可以。

在外部类内部创建成员内部类的实例:

this.new Innerclass();

在外部类之外创建内部类的实例:

(new Outerclass()).new Innerclass();

在内部类里访问外部类的成员:

Outerclass.this.member

局部内部类:

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

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

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

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

static方法中定义的内部类可以访问外部类定义的static成员

匿名内部类:

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

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

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






你可能感兴趣的:(Java开发,java,内部类)