玩命加载中 . . .

final修饰符(12)


final修饰符

关于java语言当中final关键字:

  1. final是个关键字,表示”最终的,不可变的”

  2. final修饰的类无法被继承

    final class  Animal {
    }
    /*
    // 编译报错
    class Cat extends Animal {
    }
    */
    // 
    //正确写法(Cat无法继承Animal):
    class Cat{
    }
    
  3. final修饰的方法无法被重写/覆盖

    class a {
        public final void b() {
            System.out.println("HelloWold!");
        }
    }
    class b extends a{
        public void b() {
            // 'b()' 无法重写 'study_exercise.objectexercise.exercisefinal.a' 中的 'b()';重写的方法为 final
        }
    }
    
  4. final修饰的变量一旦之后,不可重新赋值【不可二次赋值】

            // 第一种写法
            final int a = 10;
            // a = 15; // 无法将值赋给 final 变量 'a'
            // 第二种写法:
            final int b;
            b=10;
    
  5. final修饰的实例变量:

    • 综合考虑,java语言最终规定实例变量使用final修饰之后,必须手动赋值,不能采用系统默认值。

    • 因为默认构造函数在构造方法时候会将成员变量赋值所以Sun公司综合考虑让开发人员自行赋值,否则会编译错误!

    • 两种写法:

          // 第一种写法:
          final int a = 10;
          // 第二种写法:
          final int b;
          public Test() {
              this.b=100;
          }
          /**    
          总结以上两种写法:
           * 第一种写法:
           *  - 直接将成员变量直接赋值给了a,但是程序执行这句话实际是在构造函数中执行进行赋值的.
           * 第二种写法:
           *  - 直接在构造函数中赋值
           *  总结:
           *  以上两种情况其实在程序运行过程中都一样,只不过一个直接赋值一个写在构造函数中.
           */
      
  6. final修饰的引用,一旦指向某个对象之后,不能再指向其它对象,那么被指向的对象无法被垃圾回收器回收。
    注意:final修饰的引用虽然指向某个对象之后不能指向其它对象,但是所指向的对象内部的内存是可以被修改的。
    例如:

    // 加final实例化对象
            final Animal animal1 = new Animal(10);
            // animal1 = new Animal(20); // 编译报错:一旦使用final创建对象不能,不能指向其他对象
            System.out.println(animal1.a);
            animal1.a=2300;
            System.out.println(animal1.a);
            /**
             * 总结:
             * final修饰的引用虽然指向某个对象之后不能指向其它对象,但是所指向的对象内部的内存是可以被修改的。
             */
    
  7. final用法之常量的使用:

    常量的定义语法格式:

    public final static 类型 常量名 =;
    // 提示:Java规范中要求所有常量的名字全部大写,每个单词之问使用下划线_连接
    

文章作者: 小靳同学
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小靳同学 !
评论
 上一篇
多态(Polymorphism)(11) 多态(Polymorphism)(11)
多态(Polymorphism)关于java语言当中的多态语法机制:【只是多态的基础语法,多态的作用在后续的例子中讲解。】 Anima1、C
2021-06-08
下一篇 
继承(10) 继承(10)
继承 继承是面向对象三大特征之一,三大特征分别是:封装、继承、多态 继承”基本”的作用是:代码复用。但是继承最”重要”的作用是:有了继承才
2021-06-08
  目录