1.final基本使用方法
final中文最终的
final可以修饰类,属性,方法,局部变量
在哪些情况可以使用到fianl,有下面几种情况
1.希望这个类不被继承,可以用final修饰
2.当你不希望父类的方法不被子类重写,可以用fianl修饰
3.当不希望每个类的属性被修改,可以用final修饰
4.当你不希望某个局部变量被修改,也可以用final修饰
package com.baoshun.singer.final_;
public class Final01 {
public static void main(String[] args) {
E e = new E();
e.TAX_rate=0.09;
System.out.println(e.TAX_rate);
F f = new F();
f.cry();
}
}
//希望这个类不被继承,可以用final修饰
final class A{}
//class B extends A{}
//{
//不希望父类方法被重写
class C{
public void hi(){}
}
//class D extends C{
// public void hi(){
// System.out.println("重写了C类的hi方法..");
// }
//}
//不希望类的属性被修改
class E{
public double TAX_rate=0.08;
}
//不希望某个局部变量被修改,可以final修饰
class F{
public void cry(){
double num=0.01;//final修饰,num局部常量
num=0.9;
System.out.println("num="+num);
}
}
2.final的细节1
1.final修饰的属性又叫常量,一般用XX_XX_XX命名
2.final修饰的属性被定义是,必须赋初值,并且以后不能被修改
定义时
在构造器中
在代码块中
3.如果final修饰的属性是静态的,则初始化位置只能是
定义时
在静态代码块,不能在构造器中赋值
4final类不能被继承,但是可以实例化对象
package com.baoshun.singer.final_;
public class FinalDetail01 {
public static void main(String[] args) {
CC cc = new CC();
DD dd = new DD();
dd.cal();
}
}
class AA{
/*
1.定义是:如public final double tax_rate=0.08;
2.在构造器
3.在代码块
*/
public final double Tax_rate=0.08;
public final double Tax_RATE;//必须大写
public final double Tax_RATE2;
public AA() {
Tax_RATE = 20.0;
}
{Tax_RATE2=0.2;
}
}
class BB{
public static final double TAX_RATE=0.08;
//public static final double TAX_RATE1;//不可以
public static final double TAX_RATE2;
// public BB() {
// TAX_RATE1=0.6;
// }
static {
TAX_RATE2=0.3;
}
}
final class CC{
}
class DD{
public final void cal(){
System.out.println("cal()方法");
}
}
class EE extends DD{
}
3.fianl细节2
1.如果一个类是fianl类就没必要将方法修饰成fianl方法;
2.fianl不可以修饰构造器
3.包装类不能被继承
package com.baoshun.singer.final_;
public class FinalDetail02 {
public static void main(String[] args) {
System.out.println(BBBB.num);
}
}
final class AAA{
public void cry(){
}
}
class BBBB{
public final static int num=10000;
static {
System.out.println("BBBB静态代码块被调用");
}
}