Base b1 = new Base()
,b1.method(5)
这个方法很明显就是调用 Base 类中的 method 方法,因此打印结果是 Value is 5
。Base b2 = new Sub()
,Sub 是 Base 的子类,因此 b2 实际指向了 Sub 类的实例,b2.method(6)
调用的是 Sub 类中参数类型为 int 的 method 方法,因此打印的结果是 This value is 6
。正确答案为 C
b1.method(5)很简单
b2.method(6)
先在Sub类中找method()方法,找到了method(int j)
就执行Sub里面的method方法
如果没找到就回去父类里找
楼主看来对面向对象的类的继承,函数的覆盖,重载理解还不深啊。
这题考的就是类的继承,函数的重写问题。
子类执行重载函数优先级别:子类的函数->父类的函数
具体调用哪个函数取决于函数的参数类型,以及个数