手机是商品,但不只是商品
手机类需要商品类所有的属性和方法,因为手机是商品,有价格,库存数量,进价售价等
但是手机也不只是商品,除了商品通用的属性和操作之外,手机还有自己这一类商品共有的属性,比如 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的成员(包括方法和属性)。