java final

java中final关键字可用于修饰属性、方法、类

1.final修饰属性
a. final修饰基本类型属性: 当类中基本类型属性前使用final修饰时则表示该属性为常量, 一点初始后就不可更改, 如果视图更改将会报错。
b. final修饰引用类型属性: 当final修饰引用类型属性是, 则表示如果该引用使用一旦初始化后就不可修改(该引用所指向的内存地址不可更改,如果试图对将final修饰的属性指向一个新的引用, 将会报错)

package com.mjlf.myBatis.accessControl.user;

/**
 * Created by a123 on 16/12/10.
 */
public class FinalT {
    private final int num1 = 0;
    public final static int NUM = 1;
    private final String str = "";

    public void changeNum1(){
    //    num1 = 1; //final修饰基本类型一旦初始化后就不能更改, 否则编译出错
    }
    public void changStr(){
//        str = new String ();//编译报错, 
    }
    public static void main(String[] args){

    }
}

2.final修饰方法
使用final关键字修饰方法表示该方法不允许重写,这个是针对继承而言, 同时使用private关键字修饰的方法jvm也会默认为使用final修饰

package com.mjlf.myBatis.accessControl.user;

/**
 * Created by a123 on 16/12/10.
 */
public class FinalT {
    public final void test(){

    }
}

package com.mjlf.myBatis.accessControl.user;

/**
 * Created by a123 on 16/12/10.
 */
public class FinalT2 extends FinalT {
    public void test(){

    }

    public static void main(String[] args){

    }
}

Error:(7, 17) java: com.mjlf.myBatis.accessControl.user.FinalT2中的test()无法覆盖com.mjlf.myBatis.accessControl.user.FinalT中的test()
被覆盖的方法为final
3.final修饰类
final修饰类表示该类不能被继承

package com.mjlf.myBatis.accessControl.user;

/**
 * Created by a123 on 16/12/10.
 */
public final class FinalT {

}

package com.mjlf.myBatis.accessControl.user;

/**
 * Created by a123 on 16/12/10.
 */
public class FinalT2 extends FinalT {
    public static void main(String[] args){

    }
}

Error:(6, 30) java: 无法从最终com.mjlf.myBatis.accessControl.user.FinalT进行继承

4.final用在参数
final用在参数上表示参数是在方法执行过程中是不可更改的, 其意思可修饰属性大致相同,基本类型其值不允许被更改, 引用类型其指向地址不能被更改

package com.mjlf.myBatis.accessControl.user;

/**
 * Created by a123 on 16/12/10.
 */
public class FinalT {
    private final int num1 = 0;
    public final static int NUM = 1;
    private final String str = "";

    public void changeNum1(){
//        num1 = 1;
    }

    public void changStr(){
//        str = new String ();
    }

    public final void test(){
        System.out.println("father test funtion");
    }

    public final void funText (final int x, final String name){
        int y = x;
        x ++;
        name = new String ();
    }
}

Error:(25, 9) java: 不能分配最终参数x
Error:(26, 9) java: 不能分配最终参数name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值