据我了解,私有方法和最终方法是相同的。 Java编译器在编译时确定私有方法的含义。私有方法和最终方法都不能在运行时修改,也不能被覆盖。这些相似之处使它看起来像私人和最终方法是相同的。这是真的吗?
答案 0 :(得分:2)
考虑以下示例:
class Super {
private void foo(){}
final void bar(){}
}
class Sub extends Super {
private void foo(){}
final void bar(){}
}
使用foo()
方法没有问题,但在尝试编译bar()
方法时会遇到编译问题。这是因为bar()
方法无法覆盖,但foo()
方法不可见 - 因此不会发生覆盖。
您可以在此处查看更多答案:Overriding private methods in Java
答案 1 :(得分:2)
私有方法自动为final,并从其派生类中隐藏。最终类不会从其派生类中隐藏。因此,您可以创建一个与私有方法同名的新类,例如
class test {
private void works {
}
}
class tester extends test {
private void works {
}
}
但是你不能创建一个与最终方法同名的新类
/*----------Doesn't Work------------*/
class test {
final void dWorks {
}
}
class tester extends test {
final void dWorks {
}
}
示例并在此处回答:http://www.linuxtopia.org/online_books/programming_books/thinking_in_java/TIJ309_006.htm