final关键字

导读:本篇文章讲解 final关键字,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

final关键字

package JavaSE.JavaOOP.finaldemo;
/*
    final 修饰 类,方法,属性

    修饰 类:不能被继承
        方法:不能被重写
        属性:不能修改属性值
 */
public class FinalDemo1 {
    //final属性
    final double PI=3.1415926;
    final int n;
    final static int m=10;
    //final static int m; 报错: Variable 'm' might not have been initialized
    //final修饰的属性可以直接赋值或构造方法对其初始化
    //final static 修饰的属性则必须在声明时就初始化,且被修饰的属性在内存中只有一份,被所有对象共享

    //构造方法对final变量初始化
    public FinalDemo1(int a){
        n=a;
    }

    //final方法
    public final void a(){
        System.out.println("final修饰的方法");
    }

    /*
    void setPI(double d){ PI=d; }
    编译报错:Cannot assign a value to final variable 'PI'
    final变量无法修改
    */

    public void b(){
        System.out.println("普通方法");
    }
}

package JavaSE.JavaOOP.finaldemo;
//测试例1
public final class Test extends FinalDemo1 {

    public static void main(String[] args) {
        FinalDemo1 f = new Test(2);
        System.out.println(f.m);//输出静态常量
        System.out.println(f.PI);//输出常量
        f.a();//final方法
        f.b();//一般方法
    }

    public Test(int a) {
        super(a);
    }

    /*
    只能重写非final方法
    public final void a(){}
    编译报错:子类不能重写父类final方法,只能将父类final方法改为非final方法
    */

    @Override//非final方法可以重写
    public void b() {
        System.out.println("子类方法");
    }

}

运行结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-irAUV7vg-1620807376593)(final/p1.jpg)]
我们看一下继承final类的效果:

package JavaSE.JavaOOP.finaldemo;
public class Test1{
//public class Test1 extends Test{
    //编译报错
    //final类不能被继承
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15653.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!