4.1 继承
面向对象程序设计语言有三大特性:封装、继承和多态性。继承是面向对象语言的重要特征之一,没有继承的语言只能被称作“使用对象的语言”。
类是规则,用来制造对象的规则。我们不断地定义类,用定义的类制造一些对象。类定义了对象的属性和行为,就像图纸决定了房子要盖成什么样子。
基于已有的设计创造新的设计,就是面向对象程序设计中的继承。通过继承,新的类自动获得了基础类中所有的成员,包括成员变量和方法,包括各种访问属性的成员,无论是public还是private。当然,在这之后,程序员还可以加入自己的新的成员,包括变量和方法。继承是支持代码重用的重要手段之一。
重点在于弄清楚子类和父类的关系,理解子类从父类继承得到了什么。
4.1.1 资料库设计
Database.java:
package demo;
import java.util.ArrayList;
public class Database {
private ArrayList listCD=new ArrayList();
private ArrayList listDVD=new ArrayList();
public void add(CD cd){
listCD.add(cd);
}
//函数的重载
private void add(DVD dvd) {
listDVD.add(dvd);
}
public void list() {
for(CD cd:listCD)
{
cd.print();
}
for(DVD dvd:listDVD)
{
dvd.print();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Database db=new Database();
db.add(new CD("梦的河流","伍佰",12,2001,"..."));
db.add(new CD("Time of The Gypsies","Emir Kusturica",14,2007, "..."));
db.add(new DVD("La strada","Federico Fellini",108, "..."));
db.list();
}
}
CD.java:
package demo;
public class CD {
private String title;
private String artist;
private int numofTracks;
private int playingTime;
private boolean gotIt=false;
private String comment;
//自动生成的构造函数
public CD(String title, String artist, int numofTracks, int playingTime, String comment) {
// super(); 现在不需要这个super
this.title = title;
this.artist = artist;
this.numofTracks = numofTracks;
this.playingTime = playingTime;
this.comment = comment;
}
public void print() {
// TODO Auto-generated method stub
System.out.println("CD"+":"+title+":"+artist);
}
}
用这些字段帮我们做一个构造器
选择需要构造的变量然后generate就好
DVD.java:
package demo;
public class DVD {
private String title;
private String director;
private int playingTime;
private boolean gotIt=false;
private String comment;
public DVD(String title, String director, int playingTime, String comment) {
super();
this.title = title;
this.director =