-6

我的问题与此类似

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

4

2 回答 2

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())。

于 2013-09-01T21:44:35.933 回答
1

首先,您需要更正 Price() 方法的语法,您忘记在两个类中的方法名称后面使用括号。

然后你需要将Ticket类中Price()方法的返回值设为0或1这样的int值。因为你的返回类型是int,你怎么能返回一个空值。您编写的代码不会编译。

创建方法时的另一件事是以小写字母开头的名称,这是 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();
于 2013-09-02T04:43:03.643 回答