第12章 内部类
在一个类的内部定义的类称为内部类。
1、内部类的基本语法
顶层类只能处于public和默认访问级别,而成员内部类可以处于四种访问级别。
示例1:
class Outer {
public Outer(){
System.out.println("外部类Outer的实例对象创建了!");
}
public class InnerTool{ //内部类
public InnerTool(){
System.out.println("内部类InnerTool的实例对象创建了!");
}
public int add(int a,int b){
System.out.println("内部类Inner的add方法执行了,返回值为"+(a+b));
return a+b;
}
}
private InnerTool tool=new InnerTool(); //创建一个内部类的实例对象tool
public void add(int a,int b,int c){
System.out.println("外部类Outer的add方法执行了,结果为:"+tool.add(tool.add(a, b), c));
}
}
//测试类
public class Tester {
public static void main(String[] args) {
// TODO Auto-generated method stub
Outer o=new Outer(); //创建一个Outer类实例对象
o.add(1, 2, 3);
Outer.InnerTool tool=new Outer().new InnerTool();
}
}
分析:
(1)Outer o=new Outer()执行时,先创建Outer类的成员,首先对应于:private InnerTool tool=new InnerTool();调用InnerTool的构造函数,输出“内部类InnerTool的实例对象创建了!”,然后输出Outer类构造方法中的输出语句“外部类Outer的实例对象创建了!”
(2)o.add(1, 2, 3)执行时,先执行tool.add(tool.add(a, b), c)中第二个内部类tool.add()方法,再执行第一个内部类tool.add()方法,最后再执行外部类add()方法。
(3)Outer.InnerTool tool=new Outer().new InnerTool();执行时,先创建Outer外部类的实例对象,过程同(1)步,再执行new InnerTool()。
输出如下:
内部类InnerTool的实例对象创建了!
外部类Outer的实例对象创建了!
内部类Inner的add方法执行了,返回值为3
内部类Inner的add方法执行了,返回值为6
外部类Outer的add方法执行了,结果为:6
内部类InnerTool的实例对象创建了!
外部类Outer的实例对象创建了!
内部类InnerTool的实例对象创建了!