zoukankan      html  css  js  c++  java
  • Java final

    学习过程:

    定义:

    final 关键字

      使用final关键字做标识有“最终的”含义

    final 可以修饰类、方法、属性和变量

      1、final 修饰类,则该类不允许被继承

      2、final 修饰的引用类型的数据,那么指的是地址不可变,但是对象中的元素或者属性值可以改变

      3、final 修饰方法,则该方法不允许被覆盖(重写)

      4、final 修饰属性

        则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)

        或在构造方法中赋值(只能选其一)  

      5、final 修饰变量,则该变量的值只能赋值一次,即变为常量。

      6、对于成员常量要求在对象创建完成之前给值;对于静态常量而言要求在类加载完成之前给值

    注意:常量的存储和方法区中的运行时常量池有关

    public class A {
        private final int i;
        /*
        {
            i = 4;
        }
        */
        public A(){
            // this(5);
            this.i = 0;
        } // 无参构造中未初始化常量i
        public A(int i){
            this.i = i; // 常量的二次赋值
        }
    }

    实例1:

    final 修饰类,则该类不允许被继承

    public final class Animal { //final修饰的父类,
        public int age = 10;
        public String name;
        public void eat() {
            System.out.println("动物具有吃东西的方法");
        }
    }

    此时如果子类要继承用final修饰的类就会报错

    实例2:

    final 修饰方法,则该方法不允许被覆盖(重写)

    public class Animal { 
        public int age = 10;
        public String name;
        public final void eat() { //final修饰的父类的方法
            System.out.println("动物具有吃东西的方法");
        }
    }

    父类的方法被final定义之后,子类是不可以重写父类的方法的,编译会报错。

    实例3:

    final 修饰变量,则该变量的值只能赋值一次,即变为常量

    被final修饰的变量是不可以再次赋值的,所以报错。

    实例4:

    final 修饰属性

        则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)

        或在构造方法中赋值(只能选其一)

    上面图是一个不赋值的操作。

    上图是一个定义常量之后在构造方法里面赋值的方式。

     实例5:

    final 修饰方法提内部的变量

  • 相关阅读:
    《火星——UML大战需求分析》阅读笔记之三
    第七周进度条
    软甲冲刺第一次评价
    第一阶段
    5.12站立会议
    5.11站立会议
    5.10站立会议
    sprint站立会议
    软件需求说明书——图文转换
    软件项目评价
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9471340.html
Copyright © 2011-2022 走看看