封装1-7编程练习疑惑咨询
虽然我下面的代码 通过编译了,但我觉得这样的练习题目怪怪的,但是不用我下面的代码做,我实在想不出什么高招了.
我的疑问是:根据以下题意,作者和书名均为只读属性这个要求,再看看我写的代码,是不是作者和书名为只读属性是废掉?
因为题意要求通过构造函数实现属性赋值,又要求限定作者为只读属性,在main主方法调用和赋值的时候 不得不不通过构造函数直接赋值,那限定 作者和书名为只读属性还有什么意义呢? 这个限定是不是废了一样?
//通过构造方法实现属性赋值
/*通过公有的get/set方法实现属性的访问,其中:
1、限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10
2、限定作者、书名均为只读属性
*/
public class Book {
//私有属性:书名、作者、出版社、价格
private String bookTitle;
private String bookAuthor;
private String bookPress;
private double bookPrice;
//通过构造方法实现属性赋值
/*通过公有的get/set方法实现属性的访问,其中:
1、限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10
2、限定作者、书名均为只读属性
*/
public Book() {
}
public Book(String inputTitel,String inputAuthor,String inputPress,double inputPrice) {
this.bookTitle=inputTitel;
this.bookAuthor=inputAuthor;
this.bookPress=inputPress;
this.setBookPrice(inputPrice);
}
public String getBookTitle() {
return bookTitle;
}
public String getBookAuthor() {
return bookAuthor;
}
public String getBookPress() {
return bookPress;
}
public double getBookPrice() {
return bookPrice;
}
public void setBookPrice(double setPrice) {
if(setPrice>10) {
bookPrice=setPrice;
}else {
System.out.println("图书价格最低10元");
bookPrice=10;
}
}
//信息介绍方法,描述图书所有信息
public void showInfo() {
System.out.println("书名:"+getBookTitle());
System.out.println("作者:"+getBookAuthor());
System.out.println("出版社::"+getBookPress());
System.out.println("价格:"+getBookPrice());
}
}
正在回答
同学的代码完成的不错,不过根据要求,只限制作者和书名是只读属性,所以还可以给出版社加上set方法。关于同学的问题:只有get方法是只读属性,所以同学理解的不错。另外限制作者和书名为只读属性,在定义对象后,对象的作者和书名不可再改变,否则,作者和书名可以再次修改 。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
补充: main方法在这里:
public class BookTest {
// 测试方法
public static void main(String[] args) {
//实例化对象,调用相关方法实现运行效果
Book RedBook=new Book("红楼梦","曹雪芹","人民文学出版社",10);
RedBook.showInfo();
System.out.println("===================================");
Book Knife=new Book("小李飞刀","古龙","中国长安出版社",55);
Knife.showInfo();
}
}
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星