final修饰变量:不能被二次赋值
需要注意以下3点:
1、被final修饰的变量不允许二次赋值;
2、但如果final修饰的数组或者自定义对象,是允许修改数组内元素或者自定义对象的属性值的(非final修饰的);
3、另外还需要注意的是,final修饰的变量是不允许二次赋值,不是不能赋值,如果变量初始化和赋值单独成行是允许的
public static void main(String[] args) {
final String str = "final修饰的变量";
// 1.被final修饰的变量不允许二次赋值
//str = "赋值";
//str = null;
// 2.但如果final修饰的数组或者自定义对象,是允许修改数组内元素或者自定义对象的属性值的(非final修饰的)
final int[] array = {1, 2, 3, 4, 5, 6};
array[1] = 0;
// 不允许
//array = null;
final Student s = new Student("张三", 20);
s.setAge(30);
// 不允许
//s = null;
// 3.另外还需要注意的是,final修饰的变量是不允许二次赋值,像下面这样的情况是允许的
final int sum;
sum = add(1, 3);
}
public static int add(int a, int b) {
return a + b;
}
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
final修饰方法:不能被覆写
public class Test extends Super{
public static void main(String[] args) {
}
// 子类不允许覆写父类被final修饰的方法
// public static void sonFunction(){
//
// }
}
class Super{
public final void sonFunction(){
System.out.println("子类方法");
}
}
final修饰类:不能被继承
// 不能继承被final修饰的类
public class Test extends Super{
public static void main(String[] args) {
}
}
// 被final修饰的类
final class Super{
}