一、被final修饰类不可以被继承
当一个类被final修饰时候,表明这个类不能被继承。也就是说一个类永远不会被继承,则使用final进行修饰。一个类被final进行修饰,那么该类中所有成员变量以及成员方法都会被隐式指定为final方法。
二、被final修饰方法不可以被重写
一旦类中方法被final进行修饰,该方法不会被重写,但是,可以对方法进行重载。此处还需要注意的一点:一个类中方法被final修饰,并且修饰访问权限是private,将会导致子类中方法不能直接被继承,但是,可以子类中定义相同方法名和参数,此时是重新定义了新方法。如下代码:
@Data
public class CommonAttr {
private String name;
private int age;
private final void getStudent(String name){
name = this.name;
}
}
public class StudentVO extends CommonAttr {
private final void getStudent(String name) {
name = "123";
}
}
三、被final修饰是变量不可以改变是变量引用,而可以改变是变量指向的内容。
public class StudentVO {
private String name;
public StudentVO(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Demo {
public static void main(String[] args) {
final StudentVO studentVO = new StudentVO("123");
studentVO.setName("345");
System.out.println(studentVO.getName());
}
}
345
Process finished with exit code 0
public class Demo {
public static void main(String[] args) {
final StudentVO studentVO = new StudentVO("123");
final StudentVO studentVO1 = new StudentVO("456");
studentVO = studentVO1;
System.out.println(studentVO.getName());
}
}
在studentVO = studentVO1;这行编译会报错