• 接口与继承系列教材 (八)- 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

  • 相关阅读:
    正则表达式匹配
    最长回文子串
    无重复字符的最长子串
    n个骰子的点数之和
    关于模型选择
    最小堆
    kmeans++
    Dijkstra 算法
    mapreduce中获取输入文件的路径
    mapreduce数据不平衡时的处理方法
  • 原文地址:https://www.cnblogs.com/Lanht/p/12615538.html
Copyright © 2020-2023  润新知