18、final修饰符

2021-03-31  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读