由这段代码:
- class A {
- public A() {
- printValue();
- }
- public void printValue() {
- System.out.println("A_printValue");
- }
- }
- class B extends A {
- public void printValue() {
- System.out.println("B_printValue");
- }
- public void getField() {
- System.out.println("B_getField");
- }
- }
- class Test {
- public static void main(String[] args) {
- A a = new B();
- a.printValue();
- ((B)a).getField();
- }
- }
复制代码 我的问题是:
对象a的实际类型,这里是指A,还是B ?
如果是A的话,a.printValue(),调用的是B中的方法,这里的动态绑定顺序又是怎么回事?
这里和A()中调用printValue(),调用B中的方法,是否是相同原因?
|