在Java中,给定两个类,`Parent` 和 `Child`,其中 `Child` 继承自 `Parent`。`Parent` 类有一个私有实例变量`value`,并提供了一个公共的`getValue()`方法返回`value`,以及一个公共的`setValue(int val)`方法设置 `value`。`Child` 类尝试重写 `getValue()`方法。以下哪个说法是正确的?
答案解析
A选项错误,子类不能直接访问父类的私有变量,即使子类重写了方法也不能直接访问。B选项正确,`Child`类确实可以重写`getValue()`方法,因为它是`Parent`类的公共方法,虽然重写了,但是内部实现也不能直接访问父类的私有变量`value`,必须通过父类的公共方法`getValue()`间接访问。C选项错误,子类是可以重写父类的public方法的。D选项错误,Java中没有`virtual`和`abstract`关键字来显式地声明方法是否可以被重写,非final方法默认都是可以被重写的,`Child`类重写的是父类的 `getValue()` 方法,而非`value`变量。
正确答案:B