一、实验目的
1、了解类的成员设计及类与对象的关系。
2、掌握静态属性与实例属性的使用差异。
3、掌握静态方法与实例方法的使用差异。
4、掌握继承、接口、抽象类和多态性。
二、实验环境
Windows,IDEA
三、实验内容
定义一个图书类,其属性有书名、编号、定价和静态属性当前图书对象数。类中有无参构造方法和带2个参数(书名、书价)的构造方法,获取、设置书名和定价的方法,以及重写的toString()方法。书的编号采用自动编号,第1本书的编号为1,第2本书的编号为2,以此类推。并编写程序进行测试。
提示:在构造方法中,使用静态属性当前图书对象数为书对象的编号赋值。
四、完成情况
五、源代码
package com.ch;
public class Book {
private String title;
private int number;
private double price;
private static int numberOfBooks = 0;
public Book() {
numberOfBooks++;
this.number = numberOfBooks;
}
public Book(String title, double price) {
numberOfBooks++;
this.number = numberOfBooks;
this.title = title;
this.price = price;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "书名:" + title + ",编号:" + number + ",定价:" + price;
}
public static void main(String[] args) {
Book book1 = new Book();
book1.setTitle("Java入门基础");
book1.setPrice(29.99);
Book book2 = new Book("Python入门基础", 19.99);
System.out.println(book1);
System.out.println(book2);
}
}
六、程序运行结果截图
七、小结
知识掌握情况;存在的问题,如何解决
问题1: 如何设计静态属性来计数当前图书对象数?
解决方法: 可以使用一个静态变量来记录当前图书对象数,每次创建新的图书对象时,静态变量自增1。
问题2: 如何实现自动编号?
解决方法: 可以使用一个静态变量来记录当前图书的编号,每创建一个新的图书对象时,将静态变量值赋给图书对象的编号属性,然后静态变量自增1。
问题3: 如何定义无参构造方法和带2个参数的构造方法?
解决方法: 在类中创建一个无参数的构造方法和一个带2个参数的构造方法,分别用于初始化对象时,可以选择传入书名和书价或者不传入任何参数。
问题4: 如何获取和设置书名和定价的方法?
解决方法: 可以创建对应的get和set方法用于获取和设置书名和定价。
问题5: 如何重写toString()方法?
解决方法: 可以在图书类中重写toString()方法,根据需要将对象的属性转化为字符串形式,并返回该字符串。