教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

final关键字的作用和特点【final关键字的作用详细介绍】

更新时间:2021年07月13日18时19分 来源:传智教育 浏览次数:

好口碑IT培训


final关键字

final的英文意思是“最终”。 在Java中,可以使用final 关键字声明类、属性、方法,在声明时需要注意以下几点。

(1)使用final修饰的类不能有子类。

(2)使用final修饰的方法不能被子类重写。

(3)使用final修饰的变量(成员变量和局部变量)是常量,常量不可修改。

下面将对final的用法逐一进行讲解。


final关键字修饰类

Java中的类被final关键字修饰后,该类将不可以被继承,即不能派生子类。下面通过一个案例进行验证,如文件4-7所示。

文件4-7 Example07.java

// 使用final关键字修饰Animal类
final class Animal {
    // 方法体为空
}
// Dog类继承Animal类
class Dog extends Animal {
    //方法体为空
}
// 定义测试类
public class Example07 {
    public static void main (String[] args) {
        Dog dog = new Dog();    //创建Dog类的实例对象
    }
}

编译文件4-7,编译器报错,如图4-8所示。

编译报错

文件4-7中,第2行代码定义了Animal类并使用final 关键字修饰,第6~8行代码定义了Dog类并继承Animal类。

如图4-8所,当Dog类继承使用final 关键字修饰的Animal类时编译器报“无法从最终cn.itcast.Animal进行继承”错误,即不能继承使用final修饰的Animal类。由此可见,被final关键字修饰的类为最终类,不能被其他类继承。


final关键字修饰方法

当一个类的方法被final 关键字修饰后,这个类的子类将不能重写该方法。下面通过一个案例进行验证,如文件4-8所示。

// 定义Animal类
class Animal {
    //使用final关键字修饰shout()方法
    public final void shout () {
    }
}
// 定义Dog类继承Animal类
class Dog extends Animal{
    //重写Animal类的shout()方法
    public void shout (){

    }
}
// 定义测试类
public class Example08 {
    public static void main (String[] args) {
        Dog dog=new Dog ();     // 创建Dog类的实例对象
    }
}

编译文件4-8,编译器报错,如图4-9所示。

编译器报错

在文件4-8中,第10行代码在Dog类中重写了父类Aina中的shout ( )方法,编译报错。这是因为Animal类的shout ( )方法被final修饰,而被final关键字修饰的方法为最终方法,子类不能对该方法进行重写。因此,当在父类中定义某个方法时,如果不希望被子类重写,就可以使用final关键字修饰该方法。


final关键字修饰变量

Java中被final修饰的变量为常量,常量只能在声明时被赋值次,在后面的程序中,其值不能被改变。如果再次对该常量赋值,则程序会在编译时报错。 下面通过一 个案例进行验证,如文件4-9所示。

文件4-9 Example09.java

public class Example09 {
    public static void main (String[] args) {
        final int AGE = 18;    //第一次可以赋值
        AGE = 20;    //再次赋值会报错
    }
}

编译文件4-9,编译器报错,如图4-10所示。

编译器报错

在文件4-9中,当第4行代码对AGE进行二次赋值时,编译器报错。原因在于使用final定义的常量本身不可被修改。

注意:在使用final声明变量时,要求全部的字母大写。如果一个程序中的变量用public static final声明,则此变量将成为全局变量,如下面代码所示。

public static final String NAME = "哈士奇"


猜你喜欢:

Java中this关键字的常见用法有哪些?

Java算法之冒泡排序【超详细】

Java中switch条件语句的用法

Java中for循环语句的用法

传智教育java开发培训课程

0 分享到:
和我们在线交谈!