一个关于子类继承父类的问题,求高手指教下菜鸟…

wade0907cc 2011-09-29 04:53:01
public class New {
public class Vehicle {

private String color;
private String kind;
private int speed;

Vehicle(){
color = "NULL";
kind = "NULL";
speed = 0;
}

public void setSpeed( int speed1){
speed = speed1;
}

public void setColor(String color1){
color = color1;
}

public void setKind(String kind1){
kind = kind1;
}

public int getSpeed(){
return speed;
}

public String getColor(){
return color;
}

public String getKind(){
return kind;
}
}
public class Car extends Vehicle{

private int passengerNumber;

Car(){
super();
passengerNumber = 0;
};

public void setPassengerNumber(int passgerNumber){
this.passengerNumber = passengerNumber;
}

public int getPassengerNumber(){
return passengerNumber;
}
}

public static void main(String []args){
Car myCar = new Car();
myCar.setColor("Black");
myCar.setSpeed(200);
myCar.setKind("Big");
myCar.setPassengerNumber(4);
System.out.println(" My Car :");
System.out.println("Color: " + myCar.getColor());
System.out.println("Speed: " + myCar.getSpeed());
System.out.println("Kind : " + myCar.getKind() );
System.out.println("The number of the passgers: "+ myCar.getPassengerNumber());

}
}

编译时报错为 MAIN方法中 Car myCar = new Car(); 有错,Exception in thread "main" java.lang.Error: Unresolved compilation problem: No enclosing instance of type New is accessible. Must qualify the allocation with an enclosing instance of type New (e.g. x.new A() where x is an instance of New).at New.main(New.java:57)

自己猜想可能是子类继承父类时构造顺序引发的错误,具体还不清楚,求高手指点! 非常感谢!
...全文
149 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wade0907cc 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 goodnightgirl 的回复:]

楼主可以看看这篇博文
http://www.blogjava.net/raylong1982/archive/2007/10/24/155439.html
[/Quote]



谢谢!! 要好好看看了
simon1990 2011-09-29
  • 打赏
  • 举报
回复
楼主可以看看这篇博文
http://www.blogjava.net/raylong1982/archive/2007/10/24/155439.html
simon1990 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 guan19860613 的回复:]

你使用的是内部类,你把内部类看成是一个类的一个属性。那么在调用该属性的时候,你必须先new一个实例出来才能调用,所以把那段出错代码修改为如下就行了:Car myCar = new New().new Car();
[/Quote]
我也是菜鸟 第一次听说内部类,刚才查了一下,谢了
wade0907cc 2011-09-29
  • 打赏
  • 举报
回复
那如果不用内部类应该如何修改呢??
wade0907cc 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 guan19860613 的回复:]

你使用的是内部类,你把内部类看成是一个类的一个属性。那么在调用该属性的时候,你必须先new一个实例出来才能调用,所以把那段出错代码修改为如下就行了:Car myCar = new New().new Car();
[/Quote]

非常谢谢!! 正确了!!我再去思考下!
scrack 2011-09-29
  • 打赏
  • 举报
回复
内部类必须先new一个实例出来才能调用
guan19860613 2011-09-29
  • 打赏
  • 举报
回复
你使用的是内部类,你把内部类看成是一个类的一个属性。那么在调用该属性的时候,你必须先new一个实例出来才能调用,所以把那段出错代码修改为如下就行了:Car myCar = new New().new Car();

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧