【1】修饰变量
Dog类:
package com.pyk.a;
public class Dog {
int age;
double weigth;
}
Test类:
package com.pyk.a;
public class Test {
public static void main(String[] args) {
final int A=10;//final修饰变量后,此变量就不可更改值了,这个变量也就变为了字符常量,约定俗成规定:名字大写
//A=20;报错:不可以修改值
final Dog d=new Dog();//final修饰引用数据类型,那么地址值不可以改变
//d=new Dog();报错:地址值不可更改
//d对象的属性依然可以改变
d.age=10;
d.weigth=12.8;
//第3种情况
final Dog d2=new Dog();//d2的地址不可变
a(d2);
//第4种情况
b(d2);
}
public static void a(Dog d) {
d=new Dog();//d2传进来,形参d就指向了d2指向的地址,但是d的指向可以变
}
public static void b(final Dog d) {
//d=new Dog();//此处报错,因为d被final修饰了,所以指向不能改变了
}
}
【2】final修饰方法
Person类:
package com.pyk.a;
public class Person {
final public void eat() {//final修饰方法后,该方法就不能被子类重写了
System.out.println("吃饭");
}
}
Student类:
package com.pyk.a;
public class Student extends Person{
/*public void eat() {
super.eat();
}*///报错:final修饰了父类的eat方法,因此在子类种该方法不能被重写
}
【3】final修饰类:
一旦一个类被final修饰,那里面的方法也没有必要用final修饰了(final可以省略不写)
Person类:
package com.pyk.a;
final public class Person {//final修饰类,该类不可被继承
final public void eat() {
System.out.println("吃饭");
}
}
Student类:
package com.pyk.a;
/*public class Student extends Person{
public void eat() {
super.eat();
}
报错:父类Person被final修饰,因此该类不能继承
}*/