Java:不知怎的,我设法扩展了最终方法

时间:2015-02-20 22:17:16

标签: java methods final

Vector3类包含:

public final boolean set(float x, float y, float z) {
    setX(x);
    setY(y);
    setZ(z);
    return true;
}

Vector4类包含:

public boolean set(float x, float y, float z, float w) {
    setX(x);
    setY(y);
    setZ(z);
    setW(w);
    return true;
}

没有错误。为什么呢?

2 个答案:

答案 0 :(得分:4)

您没有覆盖set中的Vector4。你重载了它。 Vector4 set方法有4个参数,但Vector3' s set方法有3个参数。没有错误,因为没有方法试图覆盖final中的set Vector3方法。

答案 1 :(得分:1)

您没有扩展该方法,而是使用不同的签名创建了一个新的重载方法。尽管它们可能具有相同的名称,但它们的参数列表不同的事实使它们成为不同的方法。

您是否尝试使用:

覆盖Vector3.set(float,float,float)
public boolean set(float x, float y, float z)
在Vector4中

,编译时会出错。