徊雅0
2016-07-05 22:18
首先定义了父类Car;
然后定义了多个子类,如Aodi;
为了后续录入车辆时,同类车型只需录入型号,不再录入车名,所以在子类中定义了final变量“”“奥迪”;但运行的结果却是车名name永远为空,无法读取如“奥迪”等信息。
请问我错在了哪里???
代码如下:
package com.imook2;
public class Car {
public int No;
public String Name;
public String Xinghao;
public float Price;
public String Type;
public int TypeNo;
public int Carring;
public int CarringNo;
public String CarringDanwei;
public void DoType(){
if(TypeNo==1){
Type="载人";
}else if(TypeNo==2){
Type="载物";
}else{
System.out.println("输入有误!");
}
}
public void DoCarringDanwei(){
if(CarringNo==1){
CarringDanwei="p";
}else if(CarringNo==2){
CarringDanwei="t";
}else{
System.out.println("输入有误!");
}
}
public void out(){
System.out.println(No+". "+Name+Xinghao+" "+Price+"元/天 "+Type+":"+Carring+CarringDanwei);
}
}
package com.imook2;
public class Aodi extends Car {
public int No;
final public String Name="奥迪";
public String Xinghao;
public float Price;
public String Type;
public int TypeNo;
public int Carring;
public String CarringDanwei;
public int CarringNo;
}
package com.imook2;
public class Initail {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Car car1=new Aodi();
Car car2=new Pickup();
Car car3=new Songhuajiang();
Car car4=new Golden();
Car car5=new Mzd();
// car1.Name="奥迪";
car1.No=1;
car1.Xinghao="A4";
car1.Price=500;
car1.TypeNo=1;
car1.Carring=4;
car1.CarringNo=1;
car2.No=2;
car2.Xinghao="";
car2.Price=250;
car2.TypeNo=2;
car2.Carring=80;
car2.CarringNo=2;
car3.No=3;
car3.Xinghao="12";
car3.Price=350;
car3.TypeNo=1;
car3.Carring=7;
car3.CarringNo=1;
car4.No=4;
car4.Xinghao="V8";
car4.Price=1500;
car4.TypeNo=1;
car4.Carring=45;
car4.CarringNo=1;
car5.No=5;
car5.Xinghao="6";
car5.Price=400;
car5.TypeNo=1;
car5.Carring=4;
car5.CarringNo=1;
car1.DoType();
car1.DoCarringDanwei();
car2.DoType();
car2.DoCarringDanwei();
car3.DoType();
car3.DoCarringDanwei();
car4.DoType();
car4.DoCarringDanwei();
car5.DoType();
car5.DoCarringDanwei();
System.out.println("序号 型号 价格 载人/载物 载重量");
car1.out();
car2.out();
car3.out();
car4.out();
car5.out();
}
}
运行结果:
序号 型号 价格 载人/载物 载重量
1. nullA4 500.0元/天 载人:4p
2. null 250.0元/天 载物:80t
3. null12 350.0元/天 载人:7p
4. nullV8 1500.0元/天 载人:45p
5. null6 400.0元/天 载人:4p
1.楼主不妨直接在intial类中定义
final String carName="奥迪";
然后令
car1.Name=carName;
car2.Name=carName;
......
2.一开始楼主在Audi中重新定义了一个< final public String Name="奥迪";>这个具体为啥不对我也不是很清楚,但是这样肯定不能修改父类中的变量,因为Java中没有对变量的重写,只有方法重写。
3.楼主还可以通过重写子类构造方法以达到目的
Aodi(){
super.Name="奥迪";
}
萌新一枚,表达一下我的想法。
你在car父类里定义常量奥迪?那是不对的啊!你这样会造成无法赋值的情况!已经是常量了!无法改变原有值了
你的常量奥迪都没用呀!
Java入门第二季 升级版
531106 学习 · 6299 问题
相似问题