- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试解决一个关于Java中方法调用的问题,这个问题看起来很奇怪,我希望有人可以帮助解决这个问题。这是三个类的代码,A是顶层类,C继承自A,D继承自C。
class A {
int f(double x) {
return 1;
}
int f(boolean x) {
return 2;
}
}
class C extends A {
int f(double x) {
return 3;
}
int f(int x) {
return 4;
}
}
class D extends C {
int f(double x) {
return 5;
}
int f(int x) {
return 6;
}
}
public class test {
public static void main(String[] args) {
C b = new D();
A d = new D();
System.out.println(b.f(33));
System.out.println(d.f(33));
}
}
当我用 int 调用对象 b 的方法时,我得到 6,这意味着调用了类 D 中的方法 f(int x)。但是当我在对象 d 上调用相同的方法时,我得到 5,这意味着调用了类 D 中的方法 f(double x) 。为什么它会这样?为什么整数在一种情况下被视为整数,而在另一种情况下被视为 double ?这与我声明两个对象的方式有关,但我无法获取它。
最佳答案
区别在于对象的类型。 b
的引用类型为C
和d
的引用类型为A
。在继承的情况下,JVM 在运行时绑定(bind)方法,这意味着您只能调用引用类型的方法,但重写的方法将运行。
当您在 d
上调用该函数时,JVM 自动转换为 double
因为A
int
没有相应的方法争论。然后,该方法逐渐下降到 D
因为该对象是 D
的实例,但它仍然以 double
的形式流下来。 .
关于java - 类层次结构中方法调用的练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41578168/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!