首先什么是内部类?把一个类Inner定义在另一个类Outer的内部,Inner类就被称为内部类。
class Outer{
class Inner{
}
}
然后我们看一下内部类的访问规则:
A:可以直接访问外部类的成员,包括私有:
class Outer{
private int num = 10;
class Inner{
public void show(){
System.out.println(num);
}
}
}
B:外部类要想访问内部类成员,必须创建对象:
class Outer{
private int num = 10;
public void showOuter(){
showInner();
}
class Inner{
public void showInner(){
System.out.println(num);
}
}
}
报错:
The method showInner() is undefined for the type Outer.
修改代码:
class Outer{
private int num = 10;
public void showOuter(){
Inner i = new Inner();
i.showInner();
}
class Inner{
public void showInner(){
System.out.println(num);
}
}
}
通过内部类的对象就可以调用内部类的方法了。
A:成员内部类
private int num = 10; num是成员变量。
public void showOuter(){ showOuter是成员方法。
class Inner{ Inner是成员内部类。
那么我们怎么在main方法中访问成员内部类呢?
请牢记格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象
public static void main(String[] args) {
//成员内部类
Outer.Inner oi = new Outer().new Inner();
oi.showInner();
}
B:局部内部类
我们通常把方法里的位置叫局部位置,因此局部内部类:
class Outer{
private int num = 10;
public void showOuter(){
//方法里的位置,局部位置
class PartylyInner{
public void showInner(){
System.out.println(num);
}
}
}
···