gpt4 book ai didi

java - 涉及继承的代码片段

转载 作者:行者123 更新时间:2023-12-01 16:55:33 24 4
gpt4 key购买 nike

我正在运行的代码如下:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com