gpt4 book ai didi

java - 方法覆盖返回 null

转载 作者:行者123 更新时间:2023-12-01 07:56:18 24 4
gpt4 key购买 nike

我是Java的新手。所以问题可能听起来很简单,但我被卡住了,无法弄清楚为什么这段代码返回 null 和 0.0 ?

文件:Transport.java

公共(public)类运输{

私有(private)字符串名称;
私有(private)双倍价格;

公共(public)交通(字符串名称,双倍价格){
this.name = 名称;
this.price = 价格;
}

公共(public)字符串车名(){
返回名称;
}

公共(public)双车价格(){
退货价格;
}
}

文件:汽车.java

公共(public)类汽车扩展运输{

protected 字符串名称;
protected 双倍价格;

公共(public)汽车(字符串名称,双倍价格){
super (名称,价格);
}

@覆盖
公共(public)字符串车名(){
返回名称;
}

@覆盖
公共(public)双车价格(){
返回价格 * 1.5;
}
}

文件:Main.java

公共(public)类主要{
公共(public)静态无效主要(字符串[]参数){

汽车 c = new Car("CarBrand", 1000);

System.out.println("名称:"+ c.carName());
System.out.println("价格:"+ c.carPrice());
}
}

输出

名称:空
价格:0.0

最佳答案

您已单独声明 nameprice Car 中的变量, 并且从未为它们赋值 - 它们与 name 不同和 priceTransport 中声明(和初始化)的变量.因此,您会看到 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;
}
}

请注意,无需覆盖 carName()除非你真的想让它改变行为。

我还建议更改 carName()carPrice()getName()getPrice()更地道。

关于java - 方法覆盖返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26067831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com