- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在理解调用类之间的方法的层次结构是什么时遇到问题。我这里有这段代码:
class X {
protected int v = 0;
public X() {
v = v + 10;
}
public void proc(X p) {
System.out.println(43);
}
}
class Y extends X {
public Y() {
v = v + 5;
}
public void proc(X p) {
System.out.println(57);
}
public int getV() {
return v;
}
}
class Z extends Y {
public Z() {
v = v + 9;
}
public void proc(Z p) {
System.out.println(39);
}
}
class Main {
public static void main(String argv[]) {
X x = new Z();
Y y = new Z();
Z z = new Z();
x.proc(z);
System.out.println(y.getV());
}
}
代码打印的数据是57 24
。因此,在这种情况下,方法 proc
在 X 引用但 Z 实例的对象上调用,因此我认为将调用 X 类中的方法,但显然它调用 Y 类中的方法。这是为什么?
非常感谢。
最佳答案
x
的静态(编译时)类型是 X
。因此,对于x.proc(z)
,编译器只能从X
类(或X
的父类(super class))中声明的方法中进行选择。因此,只有 public void proc(X p)
适用(Z
类的 proc(Z p)
不适用,因为 类X
没有具有此类签名的方法)。
现在,由于x
引用的实例的运行时类型是Z
,并且由于proc(X p)
被类覆盖Y
,它是类Z
的父类(super class),在运行时是Y
的proc(X p)
方法被执行。这就是方法重写的行为。
关于java - 了解层次结构方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49511321/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!