面向对象高级语法-final

一、认识final

        final关键字是最终的意思,可以修饰类、方法、变量

        修饰类:类不能被继承

        修饰方法:方法不能被重写

        修饰变量:变量不能被二次赋值

//修饰类:类不能被继承
final class Demo{
    public static void main(String[] args) {
        final int a = 10;
        System.out.println(a);
    }
}

class Demo1 extends Demo //Cannot inherit from final class 'ithemaoopday03.src.finaldemo.Demo'
{ 
    public static void main(String[] args) {
        final int a = 10;
        System.out.println(a);
    }
}
//修饰方法,方法不能被重写
public class finalDemo {

    public static void main(String[] args) {
        /*
        *final关键字是最终的意思,可以修饰类、方法、变量
        *
        * */
    }

    public final void  show()
    {
        final int a = 10;
        System.out.println(a);
    }
    
}

//修饰方法,方法不能被重写
final class Demo extends  finalDemo{
    @Override
    public void show()//'show()' cannot override 'show()' in 'ithemaoopday03.src.finaldemo.finalDemo'; overridden method is final
    {
        System.out.println("show");
    }
    
}

public class finalDemo {
    //修饰静态变量,静态变量不能被二次赋值
    public static final int a = 10;//final修饰变量,表示该变量不能被改变,这个变量今后被成为常量
    public static void main(String[] args) {
        /*
        *final关键字是最终的意思,可以修饰类、方法、变量
        *
        * */
        show();
    }
    public  static final void  show()
    {
        a = 20;
        System.out.println(a);

    }


}
//修饰局部变量,局部变量不能被二次赋值
public static void main(String[] args) {
    /*
    *final关键字是最终的意思,可以修饰类、方法、变量
    *
    * 变量分为两类:
    * 1.成员变量:静态成员变量和实例成员变量
    * 2.局部变量
    * */
    final int b = 18;
    show(b);
}
public  static  void  show(final int b)
{
    b = 20;
    System.out.println(b);

}

二、final注意事项

        final修饰基本类型的变量,变量存储的数据不能被改变

        final修饰引用类型的变量,变量存储地址不能被改变,但地址所指向的对象可以被改变

final int[] arry ={11,22,33};
//arry = new int[]{11,22,33};//数组存储地址不能被改变,二次赋值报错
arry[0] = 20;//地址所指向的内容可以改变

三、常量

        1,使用了 static final 修饰的成员变量就被成为常量

        2.   常用于记录系统的配置信息

        3.使用常量的优势:

                代码可读性更好,可维护性也更好

                程序编译后,常量会被'宏替换';出现常量的地方会被全部替换成其记住的字面量,

这样可以保证使用常量和直接使用字面量的性能是一样的。

public class constantDemo {
    //常量

    public static final String JAVA_HOME = "D:\\java\\";
    public static void main(String[] args) {
        System.out.println(JAVA_HOME);
        System.out.println(JAVA_HOME);
        System.out.println(JAVA_HOME);

    }
}

反编译文件:

public class constantDemo {
    public static final String JAVA_HOME = "D:\\java\\";

    public static void main(String[] args) {
        System.out.println("D:\\java\\");
        System.out.println("D:\\java\\");
        System.out.println("D:\\java\\");
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值