作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有 2 个类:Triangle
和 RightAngledTr
。 RightAngledTr
继承自 Triangle
。代码如下:
Triangle
类:
class Triangle {
public void draw() {
System.out.println(“Base::draw\n“);
}
public void computeCentroid(Triangle t) {
System.out.println Base::centroid\n“);
}
}
RightAngledTr
类:
class RightAngledTr extends Triangle {
public void draw() {
System.out.println(“RightAngle::draw\n“);
}
public void computeCentroid(RightAngled t) {
System.out.println(RtAngle::centroid\n“);
}
}
在我的驱动程序中,我有以下代码行:
Triangle tr= new RightAngledTr ();
RightAngledTr rtr= new RightAngledTr ();
tr.computeCentroid(rtr);
tr.draw();
rtr.computeCentroid(tr);
我期望的输出是:
Base::centroid
Base::draw
Base::centroid
然而,我得到的输出是:
Base::centroid
RightAngle::draw
Base::centroid
我的问题是,为什么 tr.computeCentroid(rtr)
调用 Triangle
类的方法,而 tr.draw()
调用RightAngleTr
类的方法?
没有意义。 Liskov 替换原则似乎不适用。
最佳答案
computeCentroid() 方法的签名不同。因此,您不是压倒一切,而是重载。
关于java - Java中的继承和多态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33328021/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!