Java中的内部类

来源:互联网 发布:mac book可以安装vs么 编辑:程序博客网 时间:2024/06/05 19:31

       Java中存在内部类,主要是可以在一个类中再定义一个类。定义在内部的类叫做内部类,外部包裹内部类的叫做外部类。内部类的作用主要有:(1)内部类实现了更好的封装,将内部类隐藏在外部类内,不允许同一包中的其他类访问该内部类。(2)内部类中的方法可以直接访问外部类的所有数据,包括私有数据。(3)内部类实现的功能外部类也能实现,只不过是更加方便。其中,Java中的内部类一共有四种,分别是,成员内部类,静态内部类,方法内部类,匿名内部类。

    1.成员内部类

(1)内部类定义在内部,相当于外部类的一个成员变量的位置。内部类声明时, 可以使用任意的访问控制符。如public,private,protected都可以。

(2)内部类中的方法可以访问外部类所有的成员变量,同时,内部类也能直接调用外部类的方法。如果内部类和外部类有一个相同的变量a,在内部类的方法中使用a则默认是使用内部类中的成员变量,如果想调用外部类中的变量a,则需要使用(外部类.this.a )的方式。

(3)如果想在main()函数中调用内部类中方法,需要创建一个内部类的对象调用这个方法,创建内部类对象通过(外部类.new 内部类())实现。

(4)外部类不能直接使用内部类的方法跟变量,只能通过先创建内部类的对象,再用对象调用内部类的方法跟成员变量。

2.静态内部类

由static关键字修饰的内部类,称为静态类。

(1)静态内部类不能直接访问外部类的非静态成员变量,但是可以通过(new 外部类.非静态成员变量())的方式访问。

静态内部类也可以直接调用外部类的静态方法,非静态方法通过(new 外部类.非静态方法())

(2)如果外部类的静态成员变量跟内部类的成员变量名称相同时,仍然以a为例,通过(外部类.a)使用外部类的静态成员变量,若使用a,则使用的是内部类的成员变量。

(3)创建静态内部类的对象时,可以直接通过(new 内部类)的方式,不需要使用外部类。

3.方法内部类

就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,只能在该方法内部可以只用。因此,方法内部类不能用static以及public,private,protected这些修饰。

在创建内部类的方法中创建该内部类的对象,调用内部类的方法。此时该内部类的方法仍然可以直接使用创建内部类的方法中的成员变量。



0 0