final修饰类
- final修饰类
package charactor;
//final修饰类
public final class Hero {
public String name;
public float hp;
public int damage;
public Hero() {
}
// 增加一个初始化name的构造方法
public Hero(String name) {
this.name = name;
}
// 重写toString方法
public String toString() {
return name;
}
}
当Hero被修饰成final的时候,表示Hero不能够被继承。
其子类会出现编译错误
final修饰方法
- final修饰方法
package charactor;
public class Hero {
public String name;
public float hp;
public int damage;
//final修饰方法
public final void useItem(){
System.out.println("hero use item");
}
public Hero() {
}
// 增加一个初始化name的构造方法
public Hero(String name) {
this.name = name;
}
// 重写toString方法
public String toString() {
return name;
}
}
Hero的useItem方法被修饰成final,那么该方法在ADHero中,不能够被重写。
final修饰基本类型变量
- final修饰基本类型变量
package charactor;
public class Hero {
public String name;
public float hp;
public int damage;
public static void main(String[] args) {
//final修饰基本类型变量
final int hp;
hp = 5;
hp = 6;//报错
}
}
final修饰基本类型变量,表示该变量只有一次赋值机会 。
12行进行了赋值,13行就不可以再进行赋值了
final修饰引用
- final修饰引用
package charactor;
public class Hero{
public String name;
public float hp;
public int damage;
public static void main(String[] args) {
final Hero h;
h =new Hero();
h =new Hero();
h.hp = 5;
}
}
h引用被修饰成final,表示该引用只有1次指向对象的机会。
所以12行会出现编译错误
但是,依然通过h引用修改对象的属性值hp,因为hp并没有final修饰