在父类中传递的子实例参数

时间:2017-01-13 14:34:31

标签: java reflection casting polymorphism shadowing

我有父类:

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()方法。 请解释一下行为。 感谢

0 个答案:

没有答案