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);
}
}
也许下面代码更有说服力:
[quote][code="java"]class Car {
public Car() {
super();
}
void run() {
}
class Wheel {
Wheel(){
System.out.println("能否运行这里?");
}
void round() {
}
}
}
public 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);
}
}[/code][/quote]
[quote]
[code="java"]
car.super();//这里怎么理解??
[/code]
[/quote]
调用Car的父类的构造函数
1.先弄明白没个类如果没有定义构造函数,会有一个默认的无参构造函数
2.再搞清楚super是指当然类的父类
我倒觉得是:
[quote][code="java"]car.super();//这里怎么理解??[/code][/quote]
我觉得是调用的是Wheel的构造方法。
car.super()不是调用的Object的构造方法么?这与内部类外部类有什么关系,因为这段代码里的类全都是default类型的。
首先要搞清楚,继承的问题,显然,继承的是Car.Wheel,那么父类就是Wheel,这个跟是不是内部类无任何关系,至于下面的car.super();//这里怎么理解??
这个调用,那更是跟那个扯不上半毛钱关系,传入一个Car类对象,调用它的父类构造方法,他采用的默认的,那么调用的不是就是object的吗, 这个没什么疑问的。
我在eclipse下测试了一下,结果是
Wheel类的构造方法。
我的测试代码如下:
[quote][code="java"]
class Car {
public Car() {
super();
}
void run() {
}
class Wheel {
void round() {
}
}
}
public 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);
}
}[/code][/quote]
你只要把光标放到super()方法上eclipse就会告诉你了。