Java中的final关键字

/**
 * final关键字代表最终的,不可改变的.
 * 常见四种用法
 * 1:可以用来修饰一个类;
 * 2:可以用来修饰一个方法;
 * 3:可以用来修饰一个局部变量;
 * 4:还可以用来修饰一个成员变量;
 */
public class Final001 {
    public static void main(String[] args) {
        MyZi myzi = new MyZi();
        myzi.sleep3();
        Variable variable = new Variable();
        variable.look();
    }
}

/**
 * 当final修饰一个类的时候;
 * 格式:
 * public final class 类名称{
 *     .....
 * }
 * 注意:当final修饰一个类的时候,当前这个类不能有任何子类.
 *      其中的所以成员方法都不能覆盖重写(因为没有子类).
 */
final class myClass{
    public void sleep(){
        System.out.println("正在睡觉");
    }
}
/**
 * 当final修饰一个方法的时候;
 * 格式:
 * 修饰符 final 返回值类型 方法名称(参数列表){
 *     ....方法体
 * }
 * 1:这个方法是最终方法,也就是不能被覆盖重写.
 */
class MyFumy{
    public final void sleep2(){
        System.out.println("睡觉");
    }
    public void sleep3(){
        System.out.println("睡觉");
    }
}
class MyZi extends MyFumy{
//    错误写法,不能进行覆盖重写
//    public void sleep2(){
//        System.out.println("必须睡觉");
//    }
    public void sleep3(){//没有final修饰,所以可以覆盖重写
            System.out.println("必须睡觉");
        }
}

/**
 * 可以用来修饰一个局部变量;
 * 那么这个局部变量是不能进行改变的(一次赋值,终身不变);
 *1:对于基本数据来说,不可变的是变量当中的数据不可改变.
 *2:对于引用类型来说,不可变的是变量当中的地址值不可改变.
 */
class Variable{
    public void look(){
        int mun = 10;
        System.out.println(mun);//输出为10;
        mun = 20;
        System.out.println(mun);//输出为20;
        final int mun2 = 50;
        System.out.println(mun2);//输出为50;
        //mun2 = 60;错误写法,直接报错.
    }
}
/**
 * 还可以用来修饰一个成员变量;
 * 1:由于成员变量有默认值,所以用来final后要进行手动赋值,不会在给默认值了;
 * 2:对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值.(二者选其一);
 * 3:必须保证类当中所有重载的构造方法,都最终会对final的成员变量进行赋值;
 */
class Person{
//    private final String name = "大黄";
    private final String name;
    public Person(){
        name = "大骨头";
    }
    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

//    public void setName(String name) {通过构造方法赋值,去掉set方法.
//        this.name = name;
//    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值