我的问题类似于此
public class Ticket {
public int Price{ return null;} }
public class RedTicket extends Ticket {
public int Price { return 40; } }
Ticket t = new RedTicket();
int test = t.Price();
如果我在C#中使用virtual
/ override
个关键字,我希望这会返回40
。而是返回null
。
如何让它返回40
?
答案 0 :(得分:1)
Price()
方法的返回类型为int
。无法将null
分配给int
,因此在null
中返回Price()
会导致编译错误。您还忘记了Price()
方法中的括号。
以下类定义应该编译:
public class Ticket {
public int Price() { // added brackets
return 1; // changed null to an int value
}
}
public class RedTicket extends Ticket {
public int Price() {
return 40;
}
}
如果您现在执行
Ticket t = new RedTicket();
int test = t.Price();
你会发现40
(而不是1
返回的Ticket.Price()
。
答案 1 :(得分:1)
首先,您需要更正方法Price()的语法,您忘记在两个类中的方法名称之后使用括号。
然后,您需要将类Ticket中的Price()方法的返回值设置为类似0或1的int值。因为返回类型是int,如何返回null值。您编写的代码将无法编译。
创建方法时还有一件事是使用小写字母开始名称,这是java中的标准约定。
更正后的代码:
public class Ticket {
public int price(){ return 0;} }
public class RedTicket extends Ticket {
public int price { return 40; } }
Ticket t = new RedTicket();
int test = t.Price();