我是Java的新手.所以问题可能听起来很简单,但我陷入困境,无法弄清楚为什么这段代码返回null和0.0?
file:Transport.java
public class Transport {
private String name;
private double price;
public Transport(String name, double price) {
this.name = name;
this.price = price;
}
public String carName() {
return name;
}
public double carPrice(){
return price;
}
}
文件:Car.java
public class Car extends Transport{
protected String name;
protected double price;
public Car(String name, double price) {
super(name, price);
}
@Override
public String carName(){
return name;
}
@Override
public double carPrice(){
return price * 1.5;
}
}
file:Main.java
public class Main {
public static void main(String[] args) {
Car c = new Car("CarBrand", 1000);
System.out.println("Name: " + c.carName());
System.out.println("Price: " + c.carPrice());
}
}
产量
Name: null Price: 0.0
你已经声明了单独的 name和price变量Car,并且从未为它们赋值 - 它们name与price声明(和初始化)的变量和变量不同Transport.所以,你看到的默认值String和double,基本上是这样.摆脱那些额外的变量Car,并用于super.carPrice()获得原始价格Transport:
public class Car extends Transport {
public Car(String name, double price) {
super(name, price);
}
@Override
public double carPrice(){
return super.carPrice() * 1.5;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,carName()除非您真的希望它改变行为,否则根本不需要覆盖.
我还建议改变carName()并carPrice()以getName()与getPrice()更加地道.
| 归档时间: |
|
| 查看次数: |
1278 次 |
| 最近记录: |