设计一个书包类(SchoolBag)及行李包类(Luggage),书包只能放书(Book),行李包只能放衣服(Cloth)。基于如图1,设计两个父类Bag和Stuff类,类Bag中包含放和取东西(Stuff)两个方法及输出物件的方法。类Stuff包含输出信息toString()方法。同时设计一个测试类,可参考如下图2,完成: 1)创建Stuff数组,该数组引用多个书和衣服实例对象,同时创建SchoolBag 和Luggage对象。 2)对书包和行李包分别进行putStuff和getStuff操作。 3)输出书包和行李包中的所有Stuff。
时间: 2024-02-22 10:56:26 浏览: 52
以下是基于要求的Java代码实现:
```
// Stuff类
public abstract class Stuff {
protected String name; // 物品名称
public Stuff(String name) {
this.name = name;
}
public String getName() {
return name;
}
public abstract String toString();
}
// Book类,继承自Stuff类
public class Book extends Stuff {
public Book(String name) {
super(name);
}
@Override
public String toString() {
return "Book: " + name;
}
}
// Cloth类,继承自Stuff类
public class Cloth extends Stuff {
public Cloth(String name) {
super(name);
}
@Override
public String toString() {
return "Cloth: " + name;
}
}
// Bag类
public abstract class Bag {
protected ArrayList<Stuff> stuffs = new ArrayList<>(); // 物品列表
public abstract void putStuff(Stuff stuff); // 放入物品
public abstract Stuff getStuff(int index); // 取出物品
public void outputStuffs() { // 输出物品列表
for (Stuff stuff : stuffs) {
System.out.println(stuff.toString());
}
}
}
// SchoolBag类,继承自Bag类
public class SchoolBag extends Bag {
@Override
public void putStuff(Stuff stuff) {
if (stuff instanceof Book) { // 只能放书
stuffs.add(stuff);
} else {
System.out.println("This bag can only put books.");
}
}
@Override
public Stuff getStuff(int index) {
if (index >= 0 && index < stuffs.size()) {
return stuffs.remove(index);
} else {
System.out.println("Invalid index.");
return null;
}
}
}
// Luggage类,继承自Bag类
public class Luggage extends Bag {
@Override
public void putStuff(Stuff stuff) {
if (stuff instanceof Cloth) { // 只能放衣服
stuffs.add(stuff);
} else {
System.out.println("This luggage can only put clothes.");
}
}
@Override
public Stuff getStuff(int index) {
if (index >= 0 && index < stuffs.size()) {
return stuffs.remove(index);
} else {
System.out.println("Invalid index.");
return null;
}
}
}
// 测试类
public class Test {
public static void main(String[] args) {
Stuff[] stuffs = {
new Book("Java Programming"),
new Book("Data Structures"),
new Cloth("Shirt"),
new Cloth("Pants")
};
SchoolBag schoolBag = new SchoolBag();
Luggage luggage = new Luggage();
for (Stuff stuff : stuffs) {
if (stuff instanceof Book) {
schoolBag.putStuff(stuff);
} else if (stuff instanceof Cloth) {
luggage.putStuff(stuff);
}
}
System.out.println("School Bag:");
schoolBag.outputStuffs();
System.out.println("Luggage:");
luggage.outputStuffs();
}
}
```
运行结果:
```
School Bag:
Book: Java Programming
Book: Data Structures
Luggage:
Cloth: Shirt
Cloth: Pants
```