实验目的
(1)了解Java中类和继承的基本概念;
(2)熟悉如何创建和使用基类和子类;
(3)掌握方法覆盖的概念和实践。
实验内容
编写一个Java应用程序,分别编写一个基类:Product、两个子类Laptop和Book和一个测试类EcommerceApp。其中基类Product的设计要求如下:
(1)定义两个protected字段name和price用来描述产品的名字和价格;
(2)提供一个构造方法,用于初始化产品信息;
(3)提供一个displayInfo()方法用于显示产品信息。
子类Book继承Product类,设计要求如下:
(1)定义一个private字段author,用于描述书籍的作者;
(2)提供一个构造方法,调用super方法,初始化书籍信息;
(3)重写displayInfo()方法用于显示书籍信息;
(4)提供一个read()方法,输出“正在阅读书籍”字符串。
子类Laptop继承Product类,设计要求如下:
(1)定义一个private字段brand,用于描述笔记本电脑的品牌;
(2)提供一个构造方法,调用super方法,初始化笔记本电脑信息;
(3)重写displayInfo()方法用于显示笔记本电脑信息;
(4)提供一个bootUp()方法,输出“正在启动笔记本电脑”字符串。
主类ECommerceApp提供main方法,设计要求如下:
(1)创建类型为Product的通用产品对象genericProduct,调用displayInfo()方法输出产品信息;
(2)创建特定类型为Book的产品对象myBook,调用displayInfo()方法输出书籍产品信息;
(3)调用read()方法;
(4)创建特定类型为Laptop的产品对象myLaptop,调用displayInfo()方法输出笔记本电脑产品信息;
(5)调用bootUp()方法。
参考答案
基类Product:
public class Product {
protected String name;
protected double price;
public Product(String name, double price) {
this.name = name;
this.price = price;
}
public void displayInfo() {
System.out.println("产品名称: " + name);
System.out.println("产品价格: " + price);
}
}
子类Book:
public class Book extends Product {
private String author;
public Book(String name, double price, String author) {
super(name, price);
this.author = author;
}
@Override
public void displayInfo() {
super.displayInfo();
System.out.println("作者: " + author);
}
public void read() {
System.out.println("正在阅读书籍");
}
}
子类Laptop
public class Laptop extends Product {
private String brand;
public Laptop(String name, double price, String brand) {
super(name, price);
this.brand = brand;
}
@Override
public void displayInfo() {
super.displayInfo();
System.out.println("品牌: " + brand);
}
public void bootUp() {
System.out.println("正在启动笔记本电脑");
}
}
测试类EcommerceApp
public class EcommerceApp {
public static void main(String[] args) {
// 通用产品对象
Product genericProduct = new Product("通用产品名", 100.0);
genericProduct.displayInfo();
System.out.println();
// 书籍产品对象
Book myBook = new Book("书名, 50.0, "作者");
myBook.displayInfo();
myBook.read();
System.out.println();
// 笔记本电脑产品对象
Laptop myLaptop = new Laptop("电脑产品名", 1500.0, "品牌");
myLaptop.displayInfo();
myLaptop.bootUp();
}
}