final关键字的用法

1、final修饰变量

代码示例:

package Package8_face_the_object.test_final;

//final关键字的用法
//一、final修饰变量

//类
class Dog{
    int age;
    double weight;
}

public class Test1 {
    public static void main(String[] args) {
        //第1种情况:
        //final修饰一个变量,变量的值不可以改变,这个变量也变成了一个字符常量,约定俗称的规定:名字大写
        final int A = 10;//final修饰基本数据类型
        //A = 20;

        //第2种情况:
        //引用数据类型
        final Dog d = new Dog(); //final修饰引用数据类型,那么地址值就不可以改变
        //d = new Dog(); //重新再给一个指向(又创建了一块新的空间),但是加上final就不可以了
        //地址里(d对象)的属性依然可以随意更改
        d.age = 10;
        d.weight = 12.24;

        //第3种情况:
        final Dog d2 = new Dog();
        a(d2);//下面创建了一个a()方法
              // 这里是可以调用的,虽然d2的值不能改,
              // 但是调用a()方法的时候,d2的值传递给了d,而d的值是可以改变的,故不报错。
              // 而,
              // 像第4种情况就要报错了

        //第4种情况:
        b(d2);  //b()方法中会报错

    }
    //a()方法
    public static void a(Dog d){
        d = new Dog();
    }

    //b()方法
    public static void b(final Dog d){
        //d = new Dog();
    }
}

2、final修饰方法

      final修饰方法,那么这个方法不可以被该类的子类重写。

3、final修饰类

      final修饰类,代表没有子类,该类不可以被继承:

     一旦一个类被final修饰,那么里面的方法也没有必要用final修饰了(final可以省略不写)。

代码示例:

package Package8_face_the_object.test_final;

//final关键字的用法
//二、final修饰方法
//三、final修饰类

public final class Test2 {
     final public void eat() {
         System.out.println("我热爱编程!");
    }
}
/*
class test2 extends Test2{
//对父类的方法进行重写
    @Override
    public void eat() { //会报错
        super.eat();    //会报错
    }
} */

4、案例 —— JDK提供的Math类

看源码发现:

(1)使用Math类的时候无需导包,直接使用即可:

(2)Math类没有子类,不能被其他类继承了

(3)里面的属性全部被final修饰,方法也是被final修饰的,只是省略不写了

         原因:子类没有必要进行重写。

(4)外界不可以创建对象:

         Math m = new Math();

(5)发现Math类中的所有的属性,方法都被static修饰

         那么不用创建对象去调用,只能通过类名.属性名类名.方法名去调用 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值