【发布时间】:2017-01-14 20:26:50
【问题描述】:
请我根据以下代码解释继承+覆盖的概念。
public class Item {
private String itemType;
private String serialNumber;
public Item(String serialNumber, String itemType) {
this.setItemType(itemType);
this.setSerialNumber(serialNumber);
}
public String getItemType() {
return itemType;
}
public void setItemType(String itemType) {
this.itemType = itemType;
}
public String getSerialNumber() {
return serialNumber;
}
public void setSerialNumber(String serialNumber) {
this.serialNumber = serialNumber;
}
public String printItem() {
return serialNumber + "," + itemType;
}
}
public class Ipad extends Item {
private int ram;
public Ipad(String serialNumber, int ram) {
super(serialNumber,"iPad");
this.setRam(ram);
}
public int getRam() {
return ram;
}
public void setRam(int ram) {
this.ram = ram;
}
public String printItem() {
return super.getSerialNumber() + "," + super.getItemType()+ "," + getRam() + " GB";
}
}
我很难真正解释会发生什么,因为我是学习 Java 的新手 :) 我自己注释掉每一行,直到我得到更多练习,但直到现在似乎一步一步的 cmets成为我把握事物的最佳方式。
1) 下面的代码片段会发生什么:我假设它是一个构造函数,但是下面的两行代码是做什么的?
public Item(String serialNumber, String itemType) {
this.setItemType(itemType);
this.setSerialNumber(serialNumber);
2) 下面会发生什么 - 有两个构造函数吗? 据我了解,构造函数不能被覆盖。 我假设 super 正在从超类调用构造函数,但随后添加了一个新的 ram 变量。如果它没有被覆盖,这就是所谓的构造函数链接吗?
public Ipad(String serialNumber, int ram) {
super(serialNumber,"iPad");
this.setRam(ram);
}
3) 什么被覆盖?
4)我如何(除了使用extends关键字+ super关键字)用这个例子解释继承?
【问题讨论】:
-
请尽量限制每个...问题 1 个问题。
-
对不起,我知道它看起来很强大.. :)
-
我建议您使用您在此处找到的许多答案尝试您的源代码,或者使用谷歌搜索并自己输入一些内容。在键入时尝试继承的概念和限制:例如,尝试使用派生类的基类的私有方法。它不会编译。所以尝试所有这些,你会得到一张好照片。如果需要,甚至可以更改基类。
标签: java inheritance subclass