一个简单的媒体库,可以往里添加CD,DVD,Game等对象
- Database类
- Item类
- CD类
- DVD类
结构
类名 | 变量和方法 |
---|---|
CD类 | 变量:title, director, playingTime, comment,artist, numofTracks ,gotIt |
方法:add(添加数据),list(输出数据) | |
DVD类 | 变量:title, director, playingTime, comment,director,gotIt; |
方法:add(添加数据),list(输出数据) | |
抽象出 Item 类 | 变量:title, gotIt, playingTime, comment |
方法:add(添加数据),list(输出数据) |
Database类
package dome;
import java.util.ArrayList;
public class Database {
private ArrayList<Item> listItem = new ArrayList<Item>();
public void add(Item item) {
listItem.add(item);
}
public void list() {
for(Item item : listItem) {
item.print();
}
}
public static void main(String[] args) {
Database db = new Database();
db.add(new CD("陈奕迅", "ac", 4, 23, "..."));
db.add(new CD("许巍", "ac", 3, 23, "..."));
db.add(new DVD("肖申克的救赎","bbdasfb",3,"..."));
db.add(new DVD("辛德勒名单","bbdfb",4,",,,,"));
db.add(new DVD("哈哈哈","b大b",5,",,,,"));
db.list();
}
}
Item类
package dome;
public class Item {
protected String title;
protected int playingTime;
private boolean gotIt = false;
protected String comment;
public Item(String title, int playingTime, boolean gotIt, String comment) {
super();
this.playingTime = playingTime;
this.gotIt = gotIt;
this.comment = comment;
}
public Item(){ }
public void setTitle(String title) {
this.title = title;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public void print() {
}
}
CD类
package dome;
public class CD extends Item{
private String artist;
private int numofTracks;
public CD(String title, String artist, int numofTracks, int playingTime,
String comment) {
super();
this.title = title;
this.artist = artist;
this.numofTracks = numofTracks;
this.playingTime = playingTime;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public void print() {
System.out.println("CD: "+title + artist+ numofTracks+playingTime+"....");
}
}
DVD类
package dome;
public class DVD extends Item{
private String director;
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public DVD(String title, String director, int playingTime, String comment) {
super();
this.title = title;
this.director = director;
this.playingTime = playingTime;
this.comment = comment;
}
public void print() {
// TODO Auto-generated method stub
super.print();
System.out.println("DVD: "+title+director+playingTime+",,,");
}
}
把CD和DVD中,共同的属性或者方法,拿出来封装成一个类,如果需要使用这些方法或者属性,直接继承即可。特别是如果再新加入一个媒体,比如说Game。如果不把这些共同方法和属性抽象出来,每次新加入一种媒体,都需要重新定义这个媒体的属性和方法,多数情况下,这些属性或者方法会有重复的。通过抽象出一个基类,代码的可扩展性强,便于维护。