0

这是一个非常奇怪的问题,所以请多多包涵。

我想知道Java规范是否保证两个子类中的覆盖方法通过每个子类中的相同机制来解决。换句话说,如果我有

public class Foo {
    public int frob() {
        return 7;
    }
}

public class Bar extends Foo {
    @Override
    public int frob() {
        return 8;
    }
}

public class Baz extends Foo {
    @Override
    public int frob() {
        return 9;
    }
}

和某处的方法:

public static int quux(Bar b) {
    return b.frob();
}

我知道只打电话.frob(),打电话b有多安全quux((Bar)new Baz())

4

2 回答 2

2

quux((Bar)new Baz())甚至不会编译。Baz (因为IS-NOT a ,所以不能从 Baz 转换到 Bar Bar)。

于 2012-12-01T04:55:45.220 回答
0

- Bar IS-AFoo 和 Baz IS-AFoo。

-但是 Bar 既不是 Baz 也不是 Baz 是 Bar,所以这个铸造是行不通的。

于 2012-12-01T05:13:52.357 回答