设计一个媒体类,其中包含书本、CD、磁带三个子类,实现插入、删除、查找功能java
时间: 2023-07-10 07:05:13 浏览: 274
可以设计一个Media类作为媒体类的父类,包含媒体的基本属性,如名称、出版日期、价格等。再定义三个子类:Book类,CD类和Tape类,分别继承Media类,并增加自己特有的属性和方法。
下面是一个简单的Java代码示例:
```
public class Media {
private String name; // 名称
private String publishDate; // 出版日期
private double price; // 价格
// 构造函数
public Media(String name, String publishDate, double price) {
this.name = name;
this.publishDate = publishDate;
this.price = price;
}
// getter 和 setter 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPublishDate() {
return publishDate;
}
public void setPublishDate(String publishDate) {
this.publishDate = publishDate;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
public class Book extends Media {
private String author; // 作者
private int pageNumber; // 页数
// 构造函数
public Book(String name, String publishDate, double price, String author, int pageNumber) {
super(name, publishDate, price);
this.author = author;
this.pageNumber = pageNumber;
}
// getter 和 setter 方法
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getPageNumber() {
return pageNumber;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
// toString 方法
public String toString() {
return "书名:" + getName() + ",作者:" + author + ",出版日期:" + getPublishDate() + ",页数:" + pageNumber + ",价格:" + getPrice();
}
}
public class CD extends Media {
private String artist; // 艺术家
// 构造函数
public CD(String name, String publishDate, double price, String artist) {
super(name, publishDate, price);
this.artist = artist;
}
// getter 和 setter 方法
public String getArtist() {
return artist;
}
public void setArtist(String artist) {
this.artist = artist;
}
// toString 方法
public String toString() {
return "CD名称:" + getName() + ",艺术家:" + artist + ",出版日期:" + getPublishDate() + ",价格:" + getPrice();
}
}
public class Tape extends Media {
private int playingTime; // 播放时间
// 构造函数
public Tape(String name, String publishDate, double price, int playingTime) {
super(name, publishDate, price);
this.playingTime = playingTime;
}
// getter 和 setter 方法
public int getPlayingTime() {
return playingTime;
}
public void setPlayingTime(int playingTime) {
this.playingTime = playingTime;
}
// toString 方法
public String toString() {
return "磁带名称:" + getName() + ",播放时间:" + playingTime + "分钟,出版日期:" + getPublishDate() + ",价格:" + getPrice();
}
}
```
然后可以定义一个MediaList类来管理媒体列表,实现插入、删除、查找等功能。下面是一个简单的示例代码:
```
import java.util.ArrayList;
public class MediaList {
private ArrayList<Media> list; // 媒体列表
// 构造函数
public MediaList() {
list = new ArrayList<Media>();
}
// 插入媒体
public void add(Media media) {
list.add(media);
}
// 删除媒体
public void remove(Media media) {
list.remove(media);
}
// 查找媒体
public Media find(String name) {
for (Media media : list) {
if (media.getName().equals(name)) {
return media;
}
}
return null;
}
// 输出媒体列表
public void display() {
for (Media media : list) {
System.out.println(media.toString());
}
}
}
```
可以在主函数中测试代码:
```
public static void main(String[] args) {
MediaList list = new MediaList();
list.add(new Book("Java编程思想", "2005-06-01", 89.9, "Bruce Eckel", 1000));
list.add(new CD("The Wall", "1979-11-30", 29.9, "Pink Floyd"));
list.add(new Tape("Les Miserables", "1987-12-01", 19.9, 150));
list.display();
System.out.println("---------------------------");
list.remove(list.find("The Wall"));
list.display();
}
```
输出结果:
```
书名:Java编程思想,作者:Bruce Eckel,出版日期:2005-06-01,页数:1000,价格:89.9
CD名称:The Wall,艺术家:Pink Floyd,出版日期:1979-11-30,价格:29.9
磁带名称:Les Miserables,播放时间:150分钟,出版日期:1987-12-01,价格:19.9
---------------------------
书名:Java编程思想,作者:Bruce Eckel,出版日期:2005-06-01,页数:1000,价格:89.9
磁带名称:Les Miserables,播放时间:150分钟,出版日期:1987-12-01,价格:19.9
```
阅读全文