private方法被隐式的指定为final,这句话对吗,解释一下?
不对,final是最终态,不可被继承,private是私有,只有本类使用,如果内部类就可以将私有的类使用。可见private并没有被final了。
private protect public 表示的是可访问的权限,private修饰的属性不可以被外部访问(子类也不可以)。
final 表示的是类不可被继承,属性不可被修改。
这两个修饰符没有什么联系。所以这句话肯定不对
从类设计的角度而言,private 方法不能被子类重写(override)。
final关键字用于类的成员方法时,该方法不能被子类重写。
编译器会将类的private方法作为final方法对待,所以:
private final SomeMethod() //这里final是冗余的。写也行,但一般没必要加。
{
}
如果对您有帮助,请采纳答案好吗,谢谢!
final 表示的是类不可被继承,属性不可被修改。
首先,private和final是两个概念。
一、final方法表示不可被覆盖,当然仅仅只是被覆盖,不包括被重载(方法签名不同)。例如
//父类
public class Father {
public final void sing(){
System.out.println("fahter---sing");
}
}
//子类
public class Son extends Father{
public void sing(String str){
System.out.println("son---"+str);
}
}
//单元测试类
public class Jtest01 {
@Test
public void test() {
Son son = new Son();
son.sing();
son.sing("随便唱点什么");
}
}
这样子重载对于final方法,是没有任何影响的。编译也是能通过的。但是如果子类按照下面这种方法去写(即覆盖),就会编译错误。
public class Son extends Father{
public void sing(){
System.out.println("son---sing");
}
}
二、但是吧,如果是private方法,不管子类做覆盖还是重载,都是不影响的。编译都是可以通过的。实际上子类的方法相当于是另一个方法,和父类的同名方法完全没有关系了。
总结:所以吧,我觉得,这个理解是一种不严谨的说法。
毕竟如果是private父类,那么也就和子类没有任何关系了,也就是唯一的。不管你是final还是不是final都与子类无关。我觉得如果有这么一句话,一定是很牵强的关联都一块。根本不是一回事。