原文地址:
private和final是JAVA中两个常用的关键字。在类中,它们既可修饰成员变量,也可修饰方法。由于修饰变量比较简单,这里就不再赘述。
假设在类A中定义一个由private修饰的方法method1,而类B是类A的子类。那么,类A中的method1不能被B继承,自然也不可能被B访问,更不可能在B中重写。因而,在子类中定义一个与method1一模一样的方法是允许的。此时,B中的method1与A中的 method1毫无关系,互不影响。
假设在类C中定义一个由final修饰的方法method2,类D继承类C。与被private修饰的method1相似,方法 method2不能被重写。但不同的是,method2可以被继承,D中的方法可以访问到method2。
那么,我提个问题,如果一个父类中的某一方法同时被private和final修饰,这个方法能不能被继承或重写呢?其实,在这里,final的作用已经被private覆盖了。换句话说,这种情形跟上面提到的第一种情形没有任何区别。你仍然可以在子类中定义与被private和 final修饰的一模一样的方法,只不过这个方法与父类中的方法没有任何关系。