final关键字

                                                           final关键字

final关键字可用于修饰类、变量和方法,它有“这是无法改变的”和“最终的含义”,因此被final修饰的类、变量和方法具有以下特性:

1.final修饰的类不能被继承。

2.final修饰的方法不能被子类重写。

3.final修饰的变量(包括局部变量和成员变量)是常量,只能被赋值一次。

一:final关键字修饰类

Java中的类被final关键字修饰后,该类将不可以再被继承,也就是不能够派生子类。

//使用final关键字修饰Cat类
final class Animal{
    //方法体
}
//Dog继承Animal类
class Dog extends Animal{
    //方法体
}

class Example{
    public static void main(String []args){
        Dog d=new Dog();    //创建实例对象
    }
}

程序运行后回报错,是因为final关键字修饰Animal类,当Dog继承自Animal时,出现了无法从最终Aniaml进行继承的错误。由此可见被final修饰的类为最终类,将无法再继承。

二:final关键字修饰方法

当一个类的方法被final关键字修饰后,这个类的子类不能重写该方法。

//定义Animal类
class Animal{
    //使用final关键字修饰shout方法
    public final shout(){
        ……………………
    }
}
class Dog extends Animal{
    //重写Animal中的shout()方法
    public void shout(){
        ……………………
    }
}
class Example{
    public static void main(String []args){
        Dog d=new Dog();
    }
}

当Dog类重写父类中的shout方法时,编译会报错,这是因为父类中的方法被final修饰,子类对该方法不能进行重写。正是因为final这种特性,当我们在父类中定义某个方法时不希望该方法被子类重写,那么我们就可以用final修饰该方法。

三:final关键字修饰变量

Java中被final修饰的变量为常量,只能被赋值一次,也就是说final修饰的变量一旦被赋值,它的值将不能再改变。

public class Example{
    public static void main(String []args){
        final int age=45;
        age=41;    //再次赋值就会报错
    }
}

当对age进行重新赋值的时候,编译报错,原因在于age被final修饰,由此可见,被final修饰的常量只能被赋值一次,其值不可改变。

posted @ 2019-04-21 21:21  小沐CA  阅读(502)  评论(0)    收藏  举报