2.34.继承:方便让商品增加新的类别

手机是商品,但不只是商品
手机类需要商品类所有的属性和方法,因为手机是商品,有价格,库存数量,进价售价等

但是手机也不只是商品,除了商品通用的属性和操作之外,手机还有自己这一类商品共有的属性,比如 CPU,内存,存储,品牌,操作系统,屏幕大小等描述信息

把商品类里的属性和方法都复制过来,然后再增加上手机自己的属性和方法。又是熟
悉的问题!

继承:问题迎刃而解
看例程:继承的语法和作用
• 子类继承了父类的方法和属性
• 使用子类的引用可以调用父类的共有方法
• 使用子类的引用可以访问父类的共有属性
• 就好像子类的引用可以一物二用,既可以当作父类的引用使用,又可以当作子类的引用
使用。

// >> TODO 继承的语法就是在类名后面使用extends 加 要继承的类名
// >> TODO 被继承的类叫做父类(Parent Class),比如本例中的MerchandiseV2。
// >> TODO 继承者叫做子类(Sub Class),比如本例中的PhoneExtendsMerchandise。
// >> TODO Java中只允许一个类有一个直接的父类(Parent Class),即所谓的单继承
// >> TODO 没错,别的类也可以继承子类,比如可以有一个HuaweiPhone继承PhoneExtendsMerchandise
//    TODO 这时候,HuaweiPhone就是PhoneExtendsMerchandise的子类了。
// >> TODO 子类继承了父类什么呢?所有的属性和方法。
// >> TODO 但是子类并不能访问父类的private的成员(包括方法和属性)。
public class PhoneExtendsMerchandise extends MerchandiseV2 {

    // 给Phone增加新的属性和方法
    private double screenSize;
    private double cpuHZ;
    private int memoryG;
    private int storageG;
    private String brand;
    private String os;

    public PhoneExtendsMerchandise(
        String name, String id, int count, double soldPrice, double purchasePrice,
        double screenSize, double cpuHZ, int memoryG, int storageG, String brand, String os
    ) {

        this.screenSize = screenSize;
        this.cpuHZ = cpuHZ;
        this.memoryG = memoryG;
        this.storageG = storageG;
        this.brand = brand;
        this.os = os;

        this.setName(name);
        this.setId(id);
        this.setCount(count);
        this.setSoldPrice(soldPrice);
        this.setPurchasePrice(purchasePrice);
    }

    public void describePhone() {
        System.out.println("此手机商品属性如下");
        describe();
        System.out.println("手机厂商为" + brand + ";系统为" + os + ";硬件配置如下:\n" +
            "屏幕:" + screenSize + "寸\n" +
            "cpu主频" + cpuHZ + " GHz\n" +
            "内存" + memoryG + "Gb\n" +
            "存储空间" + storageG + "Gb\n");

    }

    public boolean meetCondition() {
        return true;
    }

    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 int getMemoryG() {
        return memoryG;
    }

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

    public int getStorageG() {
        return storageG;
    }

    public void setStorageG(int 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;
    }
}

继承的语法就是在类名后面使用extends 加 要继承的类名
被继承的类叫做父类(Parent Class),比如本例中的MerchandiseV2。
继承者叫做子类(Sub Class),比如本例中的PhoneExtendsMerchandise。
Java中只允许一个类有一个直接的父类(Parent Class),即所谓的单继承
没错,别的类也可以继承子类,比如可以有一个HuaweiPhone继承PhoneExtendsMerchandise
这时候,HuaweiPhone就是PhoneExtendsMerchandise的子类了。
子类继承了父类什么呢?所有的属性和方法。
但是子类并不能访问父类的private的成员(包括方法和属性)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值