假设,如果,要是,'静态变量'的继承能够按照我‘天真的以为是的那个样子’,会怎么样呢?
class Person { } class Person2 extends Person { class Person3 extends Person { } |
Person2 和 Person3 都继承自Person。
接着我希望如此:
public class Test { Person.name();//希望能打印出 "person" }
|
但是最后都打印了出person3.总结一句:
静态变量和静态方法是完全特定属于某个类的。继承自父类的类访问到的静态变量也是它父亲的。你可以申明自己的静态变量覆盖父类的静态变量,但是如果你用的是继承自父类的静态方法获取静态变量,你最终得到的也是父类的静态变量。
这是完全操蛋的设计!!!
继承就应该是继承到父类的一份copy!
为什么我强烈的希望继承的是copy 而不是一个简单引用呢?
因为它让java的某种申明式语法成为不可能。
下面全部是基于静态变量和方法继承后在子类会获得一份新的copy的假设而成立的(这实际上是不被支持的),千万不要以为下面的例子是正确的
举个例子,我在设计一个模型类的时候:
public class Document { public static String storeIn(){ public class Person extends Document { |