接口与继承系列教材 (八)- Java的修饰符final详解

final修饰类,方法,基本类型变量,引用的时候分别有不同的意思。

步骤1:final修饰类
步骤2:final修饰方法
步骤3:final修饰基本类型变量
步骤4:final修饰引用
步骤5:常量
步骤6:练习-final
步骤7:答案-final

示例 1 : final修饰类

当Hero被修饰成final的时候,表示Hero不能够被继承
其子类会出现编译错误

final修饰类

package charactor;

public final class Hero extends Object {

        

    String name; //姓名

        

    float hp; //血量

        

}

示例 2 : final修饰方法

Hero的useItem方法被修饰成final,那么该方法在ADHero中,不能够被重写

final修饰方法

package charactor;

import property.Item;

public class Hero extends Object {

        

    String name; //姓名

        

    float hp; //血量

        

    float armor; //护甲

        

    int moveSpeed; //移动速度

     

    public final void useItem(Item i){

        System.out.println("hero use item");

        i.effect();

    }    

     

    public Hero(){

        System.out.println("Hero的无参的构造方法 ");

    }

     

    public Hero(String name){

        System.out.println("Hero的有一个参数的构造方法 ");

        this.name = name;

    }

     

    public static void main(String[] args) {

        new Hero();

    }

      

}

示例 3 : final修饰基本类型变量

final修饰基本类型变量,表示该变量只有一次赋值机会 
16行进行了赋值,17行就不可以再进行赋值了

package charactor;

public class Hero extends Object {

        

    String name; //姓名

        

    float hp; //血量

        

    float armor; //护甲

        

    int moveSpeed; //移动速度

     

    public static void main(String[] args) {

        final int hp;

        hp = 5;

        hp = 6;

         

    }

}

示例 4 : final修饰引用

final修饰引用
h引用被修饰成final,表示该引用只有1次指向对象的机会
所以17行会出现编译错误
但是,依然通过h引用修改对象的属性值hp,因为hp并没有final修饰

package charactor;

public class Hero extends Object {

        

    String name; //姓名

        

    float hp; //血量

        

    float armor; //护甲

        

    int moveSpeed; //移动速度

     

    public static void main(String[] args) {

        final Hero h;

        h  =new Hero();

        h  =new Hero();

         

        h.hp = 5;

         

    }

      

}

示例 5 : 常量

常量指的是可以公开,直接访问,不会变化的值 
比如 itemTotalNumber 物品栏的数量是6个

package charactor;

public class Hero extends Object {

     

    public static final int itemTotalNumber = 6;//物品栏的数量

        

    String name; //姓名

        

    float hp; //血量

        

    float armor; //护甲

        

    int moveSpeed; //移动速度

     

    public static void main(String[] args) {

        final Hero h;

        h  =new Hero();

         

        h.hp = 5;

         

    }

      

}


更多内容,点击了解: https://how2j.cn/k/interface-inheritance/interface-inheritance-final/313.html

原文地址:https://www.cnblogs.com/Lanht/p/12615538.html