Java基础----------内部类
Java中的几种内部类
一、内部类种类
成员内部类
、局部内部类、静态内部类
、匿名内部类
二、使用内部类的好处
利用内部类可以实现双继承,内部类加外部类包装可隐藏不想让人知道的内容即加强封装
三、成员内部类
- 定义在一个类的内部的,与成员同等级的
- 成员内部类中
不允许定义静态变量
,一般定义的时候权限为缺省的
- 可以之间访问
外部类的所有成员
,当所访问的成员跟内部类中定义的成员名字一样时要外部类.this.名字
这样访问 - 可以访问外部类的所有方法,但是静态方法的访问要使用静态的访问方式即
类名.方法名
- 外部类不能之间访问内部类的成员,只能利用
内部类对象
来进行访问 - 在外部类的
非静态方法
中创建成员内部类对象的时候,直接new 成员内部类即可;如内部类 变量 = new 内部类(); - 对于在
其他位置(静态方法,main方法和同包其他类中等)
创建内部类对象时要利用外部类对象才能进行创建;如外部类.内部类 变量 = 外部类对象.new 内部类(); -
注意在其他包中不能利用这语法来创建成员内部类,因为这关于内部类中权限问题
四、静态内部类
- 定义在类内部的并使用
static关键字
修饰的类 - 可以定义
静态变量
,权限有四种但一般为缺省的 - 静态内部类
只能访问外部类的静态成员
,注意不能访问非静态成员(成员包括变量和方法),访问静态变量的时候如果同名要使用类名来说明,不同名则不用 - 在
外部类的方法(静态与非静态)
创建静态内部类的对象时直接创建即静态内部类 变量 = new 静态内部类 - 在
其他位置(man方法,同包其他类等)
中创建的时候要利用外部类而不用利用外部类对象来创建即外部类.静态内部类 变量 = new 外部类.内部类() - 注意静态内部类的权限问题
五、成员内部类和静态内部类的区别
- 比较大的区别是在其他位置创建对象的时候,成员内部类要依靠外部类对象创建即外部类.内部类 变量 = 外部类对象.new 内部类();而对于静态内部类来说则不用依靠外部类的对象即外部类.静态内部类 变量 = new 外部类.内部类()
谢谢阅读,如有不对之处请指出!