java private 和final

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都与子类无关。我觉得如果有这么一句话,一定是很牵强的关联都一块。根本不是一回事。

对吧,java规范第三版有类似的话:
图片说明