覆盖和阴影之间有什么区别,特别是对于“静态方法不能在子类中覆盖,只能隐藏”这句话
问问题
11638 次
2 回答
4
如果你真的重写了一个方法,你可以super()
在其中的某个时刻调用它来调用超类的实现。但是由于static
方法属于一个类,而不是一个实例,因此您只能通过提供具有相同签名的方法来“隐藏”它们。任何类型的静态成员都不能被继承,因为它们必须通过类来访问。
于 2013-06-17T17:43:43.757 回答
1
覆盖...这个术语指的是多态行为,例如
class A {
method(){...} // method in A
}
class B extends A {
@Override
method(){...} // method in B with diff impl.
}
当您尝试从 B 类调用该方法时,您会被覆盖行为 ..eg
A myA = new B();
myB.method(); // this will print the content of from overriden method as its polymorphic behavior
但是假设您使用静态修饰符声明了该方法,而不是尝试相同的代码
A myA = new B();
myA.method(); // this will print the content of the method from the class A
这是因为静态方法不能被覆盖...... B类中的方法只是隐藏了A类的方法......
于 2013-06-17T17:51:03.257 回答