美文网首页
18、final修饰符

18、final修饰符

作者: 爱学习的代代 | 来源:发表于2021-03-31 08:07 被阅读0次

说明:

final修饰符修饰对象 说明
该类不可以被继承
成员变量 仅可被赋值一次
静态变量 仅可被赋值一次,也可以在static方法块中进行赋值
引用对象 引用对象不可以再指向其他,引用对象的一些属性是可以修改的。
方法 该方法不可以被继承的子类覆盖
形参 仅可被赋值一次,在方法被调用的时候
局部变量 仅可被赋值一次

下面重点演示一下 引用对象被修饰的部分:

package day09;

public class PhoneV1 {
    private double screenSize;
    private double cpuHZ;
    private double memoryG;
    private double storageG;
    private String brand;
    private String os;
    final public MerchandiseWithConstructor merchandise;

    public  PhoneV1(double screenSize, double cpuHZ, double memoryG, double storageG, String brand, String os, MerchandiseWithConstructor merchandise) {
        this.screenSize = screenSize;
        this.cpuHZ = cpuHZ;
        this.memoryG = memoryG;
        this.storageG = storageG;
        this.brand = brand;
        this.os = os;
        this.merchandise = merchandise;
    }
    public void describe() {
        System.out.println("当前商品的名字是:" + this.merchandise.getName() + " 库存个数是:" + this.merchandise.getCount() + " 进价是:" + this.merchandise.getPurchasingRrice() + "元 " + "售价是:" + this.merchandise.getSoldPrice() + "元 " + "销售一个的毛利润是: " + (this.merchandise.getSoldPrice() - this.merchandise.getPurchasingRrice()));
        System.out.println("手机配置信息如下:\n屏幕大小:" + this.screenSize + "英寸 \nCPU主频:" + this.cpuHZ + "GHz \n内存大小:" + this.memoryG + "G \n存储空间:" + storageG + "G \n品牌:" + this.brand + " \n操作系统:" + os);
    }

    public double getScreenSize() {
        return screenSize;
    }

    public void setScreenSize(double screenSize) {
        this.screenSize = screenSize;
    }

    public double getCpuHZ() {
        return cpuHZ;
    }

    public void setCpuHZ(double cpuHZ) {
        this.cpuHZ = cpuHZ;
    }

    public double getMemoryG() {
        return memoryG;
    }

    public void setMemoryG(double memoryG) {
        this.memoryG = memoryG;
    }

    public double getStorageG() {
        return storageG;
    }

    public void setStorageG(double storageG) {
        this.storageG = storageG;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getOs() {
        return os;
    }

    public void setOs(String os) {
        this.os = os;
    }

    public MerchandiseWithConstructor getMerchandise() {
        return merchandise;
    }

}

package day09;

public class FinalTest {
    public static void main(String[] args) {
        MerchandiseWithConstructor merchandise = new MerchandiseWithConstructor(1,"小米9",100,3999,3599);

        PhoneV1 v1 = new PhoneV1(6.0,3.5,8.0,128.0,"小米", "安卓", merchandise);

//      修改merchandise的成员变量
        v1.merchandise.setCount(1000);
        v1.describe();




        MerchandiseWithConstructor m1 = new MerchandiseWithConstructor(2,"华为P30",10,4999,3999);
//      不可再次赋值
//        v1.merchandise = m1;



    }
}

执行结果:


image.png

其中 merchandise引用对象被声明成final。

  1. merchandise 没有set方法。因为其在类的构造方法中被初始化一次了,不可再次赋值
  2. 可以通过.方法获取到merchandise的引用修改其里面的内容
    3.merchandise的引用 不可以再指向其他对象。见下图


    image.png

相关文章

  • kotlin修饰符

    1. open、final 和 abstract 修饰符:默认为 final 修饰符相关成员评注final不能被重...

  • final修饰符

    final修饰符是java中比较简单的修饰符,但也是一个被误解最多的修饰符。final可以修饰变量,被final修...

  • 18、final修饰符

    说明: final修饰符修饰对象说明类该类不可以被继承成员变量仅可被赋值一次静态变量仅可被赋值一次,也可以在sta...

  • Java中的final修饰符

    Java中的final修饰符 Java中final修饰符既可以修饰变量、方法,也可以修饰类。用final修饰的变量...

  • Java 权限修饰符

    修饰符:权限修饰符:private,默认的,protected,public状态修饰符:static,final抽...

  • Java基础_final修饰符

    final修饰变量 final关键字可以修饰类、变量、方法。 final修饰符 final修饰的变量不可被改变,一...

  • Swift中的final修饰符

    Swift中的final修饰符 Swift中的final修饰符可以防止类(class)被继承,还可以防止子类重写父...

  • 使用Powermock模拟final类或方法

      对于使用final修饰符修饰的类或方法,都是不能被继承的,Mockito也不支持mock带final修饰符的类...

  • 类修饰符和方法变量修饰符

    类修饰符 interface abstract final 方法及变量修饰符 public protected p...

  • Java基础知识整理-String类

    先思考下以下问题: 1.String类能被继承吗? String类被final修饰符所修饰,被final修饰符所修...

网友评论

      本文标题:18、final修饰符

      本文链接:https://www.haomeiwen.com/subject/uxmvhltx.html