代碼如下:
class Car {
class Wheel {
}
}
class PlaneWheel extends Car.Wheel {
PlaneWheel(Car car) {
car.super(); // 這句什么意思?為什么要這樣寫?
}
public static void main(String[] args) {
Car car = new Car();
PlaneWheel pw = new PlaneWheel(car);
}
}
調用的是 Car.Wheel 的構造器
因為 你這個類,是集成自 Car.Wheel而不是 Car.
同樣,因為你不是單純的集成子Wheel,所以你必須有一個Car的實例,因為Wheel屬于Car。
以下的幾種情況都是錯誤的
class Car {
class Wheel {
Wheel(int id) { // 不再有默認無參數構造器
}
}
}
class PlaneWheel extends Car.Wheel {
PlaneWheel(Car car) {
car.super(); // 這里會出現編譯錯誤
}
public static void main(String[] args) {
Car car = new Car();
PlaneWheel pw = new PlaneWheel(car);
}
}
不寫調用
class Car {
class Wheel {
}
}
class PlaneWheel extends Car.Wheel {
PlaneWheel(Car car) { // 不寫調用,也會出現編譯錯誤
}
public static void main(String[] args) {
Car car = new Car();
PlaneWheel pw = new PlaneWheel(car);
}
}
class Car {
class Wheel {
}
}
class PlaneWheel extends Car.Wheel {
PlaneWheel(Car car) {
super();// 單純的super,同樣是錯誤的
}
public static void main(String[] args) {
Car car = new Car();
PlaneWheel pw = new PlaneWheel(car);
}
}
class Car {
class Wheel {
}
}
class PlaneWheel extends Car.Wheel {
PlaneWheel(Car car) {
car.super(); // 這句什么意思?為什么要這樣寫?
}
public static void main(String[] args) {
Car car = new Car();
PlaneWheel pw = new PlaneWheel(car);
}
}
調用的是 Car.Wheel 的構造器
因為 你這個類,是集成自 Car.Wheel而不是 Car.
同樣,因為你不是單純的集成子Wheel,所以你必須有一個Car的實例,因為Wheel屬于Car。
以下的幾種情況都是錯誤的
class Car {
class Wheel {
Wheel(int id) { // 不再有默認無參數構造器
}
}
}
class PlaneWheel extends Car.Wheel {
PlaneWheel(Car car) {
car.super(); // 這里會出現編譯錯誤
}
public static void main(String[] args) {
Car car = new Car();
PlaneWheel pw = new PlaneWheel(car);
}
}
不寫調用
class Car {
class Wheel {
}
}
class PlaneWheel extends Car.Wheel {
PlaneWheel(Car car) { // 不寫調用,也會出現編譯錯誤
}
public static void main(String[] args) {
Car car = new Car();
PlaneWheel pw = new PlaneWheel(car);
}
}
class Car {
class Wheel {
}
}
class PlaneWheel extends Car.Wheel {
PlaneWheel(Car car) {
super();// 單純的super,同樣是錯誤的
}
public static void main(String[] args) {
Car car = new Car();
PlaneWheel pw = new PlaneWheel(car);
}
}