作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
考虑以下代码:
public class A{
private int num;
public A(int n){
num = n;
}
public int getNum(){
return num;
}
public boolean f(A a){
return num == a.num * 2;
}
}
public class B extends A {
public B(int n) {
super(n);
}
public boolean f(B b) {
return getNum() == b.getNum();
}
}
public class Main
{
public static void main(String[] args){
A y1 = new B(10);
B y2 = new B(10);
System.out.println("y1.f(y2) is: "+y1.f(y2));
}
}
我不明白的是为什么方法 f
正在为类 A
运行(并打印 false)而不是 B
,因为在运行时 y1
是 B
类型,应该转到 B
类中的方法 f
吗?
最佳答案
cause in run time y1 is of type B, and should go down to method f in class B?
否:
B.f()
不会覆盖 A.f()
因为参数类型不同。它重载了它。如果您更改 B.f()
以接受类型为 A
而不是 B
的参数,您将看到它被执行。这不取决于参数的执行时类型,而是取决于调用的目标的执行时类型。
从不选择的方法实现取决于参数的执行时类型。
关于java - 多态java思想,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24651302/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!