This question already has answers here:
Using inherited overloaded methods
(11个答案)
4年前关闭。
我正在运行的代码如下:
这给出的输出如下:
我不明白第三条输出线背后的原因。
我的疑问:
tr.computeCentroid(rtr)应该调用派生类RightAngledTr的方法(因为传递的参数是rtr)。因此打印:RtAngle :: centroid
请帮我在这里。提前致谢!
和
具有不同的方法签名,因此这里根本没有覆盖。
(11个答案)
4年前关闭。
我正在运行的代码如下:
public class Triangle {
public void draw() {
System.out.println("Base::draw\n");
}
public void computeCentroid(Triangle t) {
System.out.println("Base::centroid");
}
}
class RightAngledTr extends Triangle {
public void draw() {
System.out.println("RightAngle::draw\n" );
}
public void computeCentroid(RightAngledTr t) {
System.out.println("RtAngle::centroid");
}
}
public static void main(String[] args) {
Triangle tr= new RightAngledTr();
RightAngledTr rtr= new RightAngledTr();
tr.computeCentroid(tr);
tr.draw();
tr.computeCentroid(rtr);
}
这给出的输出如下:
Base::centroid
RightAngle::draw
Base::centroid
我不明白第三条输出线背后的原因。
我的疑问:
tr.computeCentroid(rtr)应该调用派生类RightAngledTr的方法(因为传递的参数是rtr)。因此打印:RtAngle :: centroid
请帮我在这里。提前致谢!
最佳答案
public void computeCentroid(RightAngledTr t)
和
public void computeCentroid(Triangle t)
具有不同的方法签名,因此这里根本没有覆盖。
关于java - 涉及继承的代码片段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33349884/
10-13 23:35