请大家牢记一句话:内部类就相当于一个成员属性,外部类的对象可以调用内部类,或者外部类的对象可以调用内部类创建的对象
看例子
public class Car3 {
String brand; //声明汽车类的成员属性,汽车品牌
public Car3(String brand) { //构造方法,对汽车对象进行初始化
this.brand=brand;
}
class Engine{ //创建内部发动机类,他就相当于外部类Car3的一个成员属性
int maxPower;//成员属性 发动机最大马力
int maxTorque;//成员属性,发动机最大扭矩
public Engine(int maxPower,int maxTorque) {
this.maxPower=maxPower;
this.maxTorque=maxTorque;
}
public void showAttribute() {
System.out.println("发动机的最大马力为:"+maxPower);
System.out.println("发动机的最大扭矩为:"+maxTorque);
}
}
public void showBrand() {
System.out.println("汽车的品牌为:"+brand);
}
public static void main(String[] args) {
Car3 car=new Car3("奥迪A6");
car.showBrand();
Engine engine=car.new Engine(100,200);//注意Engine相当于汽车类的一个成员属性,所以应该写成car.new,而不是写成Car3.new
engine.showAttribute();
}
}
上面这个例子中我们外部类是汽车类,汽车类的成员属性是汽车的品牌,然后我们又在汽车类中创建了一个类——Engine,它被称为内部类,其实它就相当于外部类——汽车类的一个成员属性,我们可以用外部类创建的对象来调用内部类,调用方法如下
Engine engine=car.new Engine(100,200);//注意Engine相当于汽车类的一个成员属性,所以应该写成car.new,而不是写成Car3.new
car是我们利用汽车类创建的一个汽车对象,然后我们利用汽车对象去调用内部类来创建内部类的一个对象——engine,而我们却不是利用外部类名称直接去调用内部类去创建内部类的对象。
调用内部类还有一种方法,就是利用内部类自己创建一个对象,然后再有外部类的对象去直接调用内部类的对象,例如,我把上面例子的代码改一下,如下
public class Car3 {
String brand; //声明汽车类的成员属性,汽车品牌
public Car3(String brand) { //构造方法,对汽车对象进行初始化
this.brand=brand;
}
Engine engine=new Engine(100,200);//利用内部类自己创建对象,但是注意这个语句是放在内部类外面的
class Engine{ //创建内部发动机类,他就相当于外部类Car3的一个成员属性
int maxPower;//成员属性 发动机最大马力
int maxTorque;//成员属性,发动机最大扭矩
public Engine(int maxPower,int maxTorque) {
this.maxPower=maxPower;
this.maxTorque=maxTorque;
}
public void showAttribute() {
System.out.println("发动机的最大马力为:"+maxPower);
System.out.println("发动机的最大扭矩为:"+maxTorque);
}
}
public void showBrand() {
System.out.println("汽车的品牌为:"+brand);
}
public static void main(String[] args) {
Car3 car=new Car3("奥迪A6");
car.showBrand();
// Engine engine=car.new Engine(100,200);//注意Engine相当于汽车类的一个成员属性,所以应该写成car.new,而不是写成Car3.new
car.engine.showAttribute();
}
}
仔细观察就可以发现这两种方法代码的不同,第一种方法是在主方法中创建内部类对象,它需要用外部类创建的对象去调用内部类;而第二种方法呢是在内部类的外面、主方法的外面利用内部类自己创建一个对象,然后在主方法中直接利用外部类创建的对象去调用内部类创建的对象。这两种方法就对应着我文章开头让大家牢记的那句话。