我有父类:
class Parent {
public void some() {
return 10;
}
public String LAST_UPDATED_KEY = "parent_updated";
public String getLastUpdated(String key) {
// do some stuff
System.out.println(key); // prints parent_updated
System.out.println(this.some()) // prints 5
}
public String getLastUpdated() {
return this.getLastUpdated(this.LAST_UPDATED_KEY);
}
}
这是儿童班:
class Child extends Parent {
public String LAST_UPDATED_KEY = "child_updated";
// some stuff
public void some() {
return 5;
}
}
我用反射来称呼它:
public void somemethod() {
Class<? extends Parent> daoClass = (Class<? extends Parent>)Class.forName(Child.class);
Method getInstance = daoClass.getMethod("getInstance");
Parent child = getInstance.invoke(null);
child.getLastUpdated(child.LAST_UPDATED_KEY)
}
我不明白为什么它会打印父亲最后更新的密钥而不是孩子的密钥,并且它会在子项上调用some()方法。 请解释一下行为。 感谢