内部类:顾名思义,就是将一个类定义在另一个类的内部。内部的类称为内部类
如:
public class Outer{
class Inner{
}
}
主要特点:
内部类可以很好的实现隐藏,可以使用protected private修饰符
内部类可以直接访问外部类的所用成员,包括私有的成员
外部类不能直接访问内部的成员,必须首先建立内部类的对象才能访问
成员内部类及应用:
成员内部类属于外部类的实例成员,成员内部类可以有public private default
protected权限修饰符。在成员内部类中访问外部类的成员方法和属性,要使用“外部类名.this.成员方法”和“外部类名.this.成员属性”的形式
创建成员内部类的实例使用“外部类名.内部类名 实例=外部类实例名.new 内部类构造方法(参数)”的形式
//import Outer.Inner;
class Outer {
int data = 90;
void printData() {
System.out.println("外部类打印");
}
void initInner(int date) {
Inner i = new Inner();
i.data = date;
}
void visitInner() {
Inner i = new Inner();
i.data = 10;
System.out.println("内部类的date=" + i.data);
}
class Inner {
int data = 9;
void innerPrint() {
Outer.this.printData();
System.out.println("内部类打印");
System.out.println("外部类data=" + Outer.this.data);
}
}
}
public class Test {
public static void main(String[] args) {
// 外部类名.内部类名 实例=外部类实例名.new 内部类构造方法(参数)
Outer o = new Outer();
o.data = 100;
o.initInner(30);
Outer.Inner test = o.new Inner();
o.visitInner();
test.innerPrint();
}
}