我一直在阅读 SCJP 学习指南中有关静力学的部分,其中提到了以下内容:
静态方法不能被重写,
但它们可以被重新定义
重新定义到底意味着什么?是否存在父级和子级中都存在具有相同签名的静态方法的情况,但它们是通过类名单独引用的?例如 :
class Parent
{
static void doSomething(String s){};
}
class Child extends Parent
{
static void doSomething(String s){};
}
引用为:Parent.doSomething();
and Child.doSomething();
?
另外,这同样适用于静态变量,还是仅适用于静态方法?
它只是意味着这些功能不是虚拟的。举个例子,假设您有一个(运行时)Child 类型的对象,它是从 Parent 类型的变量引用的。然后如果你调用doSomething
, the doSomething
调用Parent的方法:
Parent p = new Child();
p.doSomething(); //Invokes Parent.doSomething
如果方法是非静态的,doSomething
Child 的值将覆盖 Parent 的值并且child.doSomething
会被调用。
这同样适用于静态字段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)