请查看以下代码。
Point startBlue, endBlue;
当我编译这段代码时,它编译得很好。 当我运行TestClass时,输出为:TestClass方法 裁判。变量obj是TestClass类型,但它引用了一个Sub类的对象,因此在运行时它应该与Sub的privMethod()绑定。 你能解释一下吗?
答案 0 :(得分:4)
private
个方法。只能覆盖public
,protected
和package-private
个。因此,不会应用运行时的多态行为。
如果将注释@Override
添加到子类中的声明方法,则会出现编译错误:
@Override // error
private void privMethod()
{
System.out.println("SubClass Method");
}
答案 1 :(得分:0)
私有修饰符 - 只能在自己的类中访问字段/方法。
有关access specifier的更多信息。
虽然SubClass
扩展TestClass
但是TestClass 的 privMethod()根本不可见到SubClass。因此,当您在SubClass中实现privMethod()方法时,它不会覆盖TestClass的方法。
为了确保覆盖超类的方法,可以使用@Override Java注释。如果方法与超类中的方法不匹配,编译器将给出以下错误
SubClass类型的privMethod()方法必须覆盖或实现超类型方法