请通过代码封装,实现如下需求:
编写一个类Book,代表教材:
1.具有属性:名称(title)、页数(pageNum)
2.其中页数不能少于200页,否则输出错误信息,并赋予默认值200
3.为各属性提供赋值和取值方法
4.具有方法:detail,用来在控制台输出每本教材的名称和页数
5.编写测试类BookTest进行测试:为Book对象的属性赋予初始值,并调用Book对象的detail方法,看看输出是否正确
代码
Book.Class
public class Book {
//私有书本名称属性
private String title;
//私有页码属性,并初始化页数。
private int pageNum=200;
//无参数构造方法。
public Book(){
}
//setter and getter
public void setTitle(String title){
this.title=title;
}
public String getTitle(){
return title;
}
//setter可执行安全控制,此处用递归实现页码错误的即时修改。
public void setPageNum(int pageNum){
this.pageNum=pageNum;
if (pageNum<200){
System.out.println("页数有误不能小于200,请重新输入");
java.util.Scanner s =new java.util.Scanner(System.in);
int pg=s.nextInt();
setPageNum(pg);
}
}
public int getPageNum() {
return pageNum;
}
//detail方法,实现输出书本参数结果。
public void detail(){
System.out.println("书本名称:"+getTitle());
System.out.println("书本页数:"+getPageNum());
}
}
BookTest.Class
public class BookTest {
public static void main(String[] args) {
Book b=new Book();
b.setTitle("孙子兵法");
//b.setPageNum(300);
b.setPageNum(150);
b.detail();
}
}
运行结果
页数有误不能小于200,请重新输入
100
页数有误不能小于200,请重新输入
200
书本名称:孙子兵法
书本页数:200
Process finished with exit code 0
总结
private的封装,只能在本类中访问。通过setter和getter进行设置和读取,并且在通过setter进行设置时候,可以执行安全控制。