我们已经知道,在类内部可定义成员变量与方法,有趣的是,在类内部也可以定义另一个类。
如果在类Outer的内部再定义一个类Inner,此时类Inner就称为内部类,而类Outer则称为外部类。
内部类可声明成public或private。当内部类声明成public或private时,对其访问的限制于成员变量和成员方法完全相同。
例:
public class java_ex14 {
public static void main(String[] args){
Outer outer = new Outer();
outer.inst();
}
}
class Outer{
int score = 95;
void inst(){
Inner in = new Inner();
in.display();
}
class Inner{
void display(){
System.out.println("score = " + score);
}
}
}
结果:
score = 95
解析:
内部类Inner可以直接调用外部类Outer中的score属性。
注意:外部类不发找到内部类中所声明的属性。
用static可以声明属性或方法,而用static也可以声明内部类,
用static声明的内部类则变成外部类,但是用static声明的内部类不能访问非static的外部类属性。
内部类也可以通过创建对象从外部类之外被调用,只要将内部类声明为public即可,
例:
public class java_ex15 {
public static void main(String[] args){
Outer15 outer = new Outer15();
outer.inst();
}
}
class Outer15{
int score = 95;
void inst(){
Inner in = new Inner();
in.display();
}
public class Inner{
void display(){
System.out.println("score = " + score);
}
}
}
结果:
score = 95
解析:
用public声明内部类,此内部类可被外部类访问。