杭州精品课程网站建设,能看见自己家的地图软件免费,邹平做网站,网站选择语言怎么做final关键字 基本介绍final使用细节 基本介绍 final 中文意思#xff1a;最后的#xff0c;最终的。
final 可以修饰类、属性、方法和局部变量。
在某些情况下会使用到final#xff1a; 1#xff09; 当不希望类被继承时#xff0c;可以用 final 修饰#xff1b;
// 如… final关键字 基本介绍final使用细节 基本介绍 final 中文意思最后的最终的。
final 可以修饰类、属性、方法和局部变量。
在某些情况下会使用到final 1 当不希望类被继承时可以用 final 修饰
// 如果我们要求 A类 不能被其他类继承
// 可以使用 final 修饰 A类
final class A{}class B extends A{} // 会报错2 当不希望父类的某个方法被子类覆盖/重写(override)时可以用final关键字修饰
class C{// 如果我们要求 hi 不能被子类重写// 可以使用 final 修饰 hi 方法public final void hi(){}
}class D extends C{Overridepublic void hi() { // 会报错System.out.println(重写了C类的hi方法...);}
}3 当不希望类的的某个属性的值被修改可以用final修饰
public class Final01 {public static void main(String[] args) {E e new E();e.GOODS_PRICE 75.6; // 会报错}
}// 当不希望类的的某个属性的值被修改可以用final修饰
class E{public final double GOODS_PRICE 99.5;
}4 当不希望某个局部变量被修改可以使用final修饰。
// 当不希望某个局部变量被修改可以使用final修饰
class F{public void TAX_RATE (){// 这时 RATE 也称为局部变量final double RATE 0.09;RATE 0.1; // 会报错System.out.println(RATE RATE);}
}final使用细节 1 final修饰的属性又叫常量,一般用 XX_XX_XX来命名 2 final修饰的属性在定义时必须赋初值并且以后不能再修改赋值可以在如下位置之一【 选择一个位置赋初值即可】: ① 定义时如 public final double GOODS_PRICE 99.5 ② 在构造器中 ③ 在代码块中
class AA{// ① 定义时:如 public final double price 99.5// ② 在构造器中// ③ 在代码块中public final double GOODS_PRICE 99.5;public final double GOODS_PRICE2;public final double GOODS_PRICE3;public AA(){ // 在构造器中赋值GOODS_PRICE2 66.6;}{ // 在代码块中赋值GOODS_PRICE3 77.7;}
}3 如果final修饰的属性是静态的则初始化的位置只能是 ① 定义时 ② 在静态代码块不能在构造器中赋值
class BB{// 如果final修饰的属性是静态的则初始化的位置只能是// ① 定义时// ② 在静态代码块不能在构造器中赋值public static final double GOODS_PRICE 99.5;public static final double GOODS_PRICE2;public static final double GOODS_PRICE3;public BB(){ // 会报错GOODS_PRICE2 66.6;}static { // 在静态代码块中赋值GOODS_PRICE3 77.7;}
}4 final类不能继承但是可以实例化对象 5 含有final方法则该方法虽然不能重写但是可以被继承
public class Final02 {public static void main(String[] args) {EE ee new EE(); // final类不能继承但是可以实例化对象// 含有final方法则该方法虽然不能重写但是可以被继承new DD().sout();}
}class CC{public final void sout(){System.out.println(sout()方法...);}
}class DD extends CC{
}final class EE{
}6 一般来说如果一个类已经是final类了就没有必要再将方法修饰成final方法 7 final不能修饰构造方法(即构造器) 8 final和static 往往搭配使用效率更高不会导致类加载底层编译器做了优化处理
public class Final03 {public static void main(String[] args) {System.out.println(AAA.num);}
}class AAA{public static int num 1000;static {System.out.println(AAA 静态代码块被执行...);}
}运行结果为 如果 num 不用 final 修饰则运行结果为 9 包装类(Integer、Double、Float、Boolean等都是final)String也是final类。