zoukankan      html  css  js  c++  java
  • Java自学-接口与继承 final

    Java的修饰符final

    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; //16行
            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(); //17行
             
            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;
             
        }
          
    }
    

    练习Java的修饰符final

    设计一个类SomeString,继承 String类。 能否继承?

    答案

    不能继承,因为String类是final修饰的不能被继承。

  • 相关阅读:
    The connection to the server localhost:8080 was refused
    Error: client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused
    docker-machine on azure
    Spine学习二 -播放Spine动画
    第三人称角色控制器解析
    3D人物移动控制实现方案
    Transform与Vector3 的API
    Animator.SetFloat(string name,float value,float dampTime,float deltaTime)详解
    Unity坑之 加了Rigidbody后主角反而朝天上飞?
    使用代码给Unity中的动画片段绑定回调函数
  • 原文地址:https://www.cnblogs.com/jeddzd/p/11538498.html
Copyright © 2011-2022 走看看