Java-final关键字

Java-final关键字

  • Java中被final中修饰,就代表这个东西不能再被修改,被继承了
  • final可以修饰的东西
    • final可以修饰属性
    • final可以修饰方法
    • final可以修饰类

final修饰属性

  • 代码中被final修饰属性,就代表这个属性就变成了字符常量,不能再进行修改
package com.shanlei02;

/**
 * @Auther: shanlei
 * @Date: 2020/12/7 - 12 - 07 - 22:22
 * @Description: com.shanlei02
 * @version: 1.0
 */
public class Test {
    // 这是main方法,是实现程序主要逻辑
    public static void main(String[] args) {
        // final修饰基本数据类型
        final int Age = 10;
        // Age = 20; // 被final修饰的属性,就不能修改了,这句代码会报错

        // final 修饰引用数据类型
        final Dog d = new Dog();
        // d = new Dog(); // 被final修饰的引用数据类型,也不能再重新记性修改不
        // 但是可以对对象的属性进行修改
        d.age = 3;
        d.weight = 13.5;

        // final 修饰的引用数据类型,传递给另一个方法后,可以被修改
        // 修改的是方法内的变量,不是被final修饰的那个变量
        final Dog d2 = new Dog();
        a(d2);
        
        // 引用数据类型被传递给另一方法,如果那个方法的形参也被final修饰,那么这个变量也不能再修改了
        b(d2);
    }

    public static void a(Dog d){
        d = new Dog();
    }
    
    public static void b(final Dog d){
        //d = new Dog(); // 形参被final修饰,不能再进行修改
    }
}

final修饰方法

  • final修饰的方法,不能被子类重写
package com.shanlei02;

/**
 * @Auther: shanlei
 * @Date: 2020/12/7 - 12 - 07 - 22:44
 * @Description: com.shanlei02
 * @version: 1.0
 */
public class Person {
    final public void sleep(){
        System.out.println("人到了晚上要睡觉");
    }
}

class girl extends Person{
    /*
    public void sleep(){
        System.out.println("晚上上床睡觉");
    }
     */
    // girl继承自Person,Person中被final修饰的方法不能再子类中重写
}

final修饰类

  • 被final修饰的类不能被其他类继承
package com.shanlei02;

/**
 * @Auther: shanlei
 * @Date: 2020/12/7 - 12 - 07 - 22:44
 * @Description: com.shanlei02
 * @version: 1.0
 */
final public class Person {
    public void sleep(){
        System.out.println("人到了晚上要睡觉");
    }
}

/* 被final修饰的类,不能被其他类继承
class girl extends Person{
    /*
    public void sleep(){
        System.out.println("晚上上床睡觉");
    }
     */
    // girl继承自Person,Person中被final修饰的方法不能再子类中重写
}
*/
posted @ 2020-12-07 22:50  殃奕  阅读(63)  评论(0)    收藏  举报