要求如下:
(1)属性包括;书名 name(String 类型)、作者 author(String 类型)、单价 price(double类型)数量 amount(int类型),并且所有属性为私有。
(2)提供一个为书名 name作者 author、单价 price 和数量 amount 指定初值的构造方法。
(3)为私有属性提供访问器方法,但要求书名和作者一旦初始化后不能更改。(4)提供计算图书总价的方法 totalPrice 方法,图书总价一单价X数量。定义测试类 BookTest,在其 main 方法中创建一个书名为“Java”作者为“张三”单价为30、数量为 2000 的图书,并计算输出该图书的总价
package com.neuedu.variable.work;
import java.io.Serializable;
import java.util.Objects;
public class Book implements Serializable {
//implements Serializable可序列化接口
private String name;
//定义属性
private String author;
private double price;
private int amount;
public Book() {
}
//无参数构造方法
//alt+ins constructor
public Book(String name, String author, double price, int amount) {
this.name = name;
this.author = author;
this.price = price;
this.amount = amount;
}
//有参数构造方法
//alt+ins constructor 全选
//以下为输入输出的重复操作
//alt+ins
public void setName(String name){
this.name =name;
}
public String getName() {
return name;
}
public String getAuthor() {
return author;
}
public double getPrice() {
return price;
}
public int getAmount() {
return amount;
}
public void setAuthor(String author) {
this.author = author;
}
public void setPrice(double price) {
this.price = price;
}
public void setAmount(int amount) {
this.amount = amount;
}
//计算图书总价
public void sumBook(double price,int amount){
System.out.println("图书的总价为"+price*amount);
}
//以下为 alt+ins tostring
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
", amount=" + amount +
'}';}
//以下为 alt+ins equals
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Book book = (Book) o;
return Double.compare(price, book.price) == 0 && amount == book.amount && Objects.equals(name, book.name) && Objects.equals(author, book.author);
}
@Override
public int hashCode() {
return Objects.hash(name, author, price, amount);
}
//测试类
public static void main(String[ ] args){
Book book =new Book();
book.setName("Java");
book.setAuthor("张三");
book.setPrice(30.0);
book.setAmount(2000);
System.out.println(book.getName());
System.out.println(book.getAuthor());
System.out.println(book.getPrice());
System.out.println(book.getAmount());
System.out.println(book);
book.sumBook(book.getPrice(), book.getAmount());
}
}
输出结果:
Java
张三
30.0
2000
Book{name='Java', author='张三', price=30.0, amount=2000}
图书的总价为60000.0