美文网首页
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

    相关文章

      网友评论

          本文标题:18、final修饰符

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