• Java中的final修饰符


          1.什么时候可以选择final修饰符

      如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰。

          2.用final修饰的类

       首先大家要明白,用final修饰的类是不能被继承的,下面来看一个错误案例。

    eg:

    final class Penguin
    
    {
    
    }
    
    class SubPenguin extends Penguin
    
    {
    
    }

    此时这段代码的class SubPenguin extends Penguin这行代码会报错:

    The type SubPenguin cannot subclass the final class :翻译:该类型SubPenguin不能继承的最后类

    即.Penguin类不能被继承。

       3.用final修饰的方法

      eg:

      class Penguin
    
    {
    
        public final void print(){}
    
    } 
    
    class Subpenguin extends Penguin
    
    {
    
       public void print(){}//错误
    
    }

    此时这段代码public void print(){}会报错,提示错误信息:

    cannot override the final method from Penguin:翻译:无法覆盖企鹅的最后方法

    即.print方法不能被子类重写。

       4.用final修饰的变量

       用final修饰的变量包括成员变量和局部变量,他们将变成常量,只能赋值一次。

     public class Dog
    
    {
    
     final String name="小黄";//用final来修饰狗狗的姓名
    
     public void setname(String name)
    
    {
    
       this.name=name;    //错误,name不能在被赋值。
    
    }
    
    }

       5.使用final修饰符的注意点

    final可以用来修饰类,方法和属性,不能修饰构造方法。

      6.用final修饰的引用型变量,变量所指对象的属性值是否能改变?

    首先来看一个简单的例子

    //狗狗类
    
    public class Dog
    
    {
    
      String name;//狗狗的姓名
    
      //带参构造,给狗狗的名字赋值
    
      public Dog(String name)
    
    {
    
       this.name=name;
    
    } 
    
    }
    
    //测试类
    
     class Test
    
    {
    
       public static void main(String[] args)
    
      {
    
        final Dog dog=new Dog("小黄");//实例化一个狗对象,用final修饰
    
       dog.name="大黄";
    
       dog=new Dog("小八");
    
       }
    
    }

      这段代码中dog对象被修饰为final成常量,其值不可变,但要注意的是dog.name="大黄";这行代码并没有错,那么dog=new Dog("小八")是错的,也就是说,使用final修饰的引用型变量,变量不可以在指向另外的对象,但是所指变量的内容是可以改变的。

    结论:使用final修饰的引用型变量时,变量的值时固定不变的,而变量所指对象的属性值是可变的。

  • 相关阅读:
    Java实现 LeetCode 56 合并区间
    JQuery实现对html结点的操作(创建,添加,删除)
    JQuery实现对html结点的操作(创建,添加,删除)
    JQuery实现对html结点的操作(创建,添加,删除)
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 54 螺旋矩阵
    Java实现 LeetCode 54 螺旋矩阵
    Java实现 LeetCode 54 螺旋矩阵
  • 原文地址:https://www.cnblogs.com/hyjj/p/5403270.html
Copyright © 2020-2023  润新知