1-7封装编程练习
public class Book17 {
private String bookName;
private String writer;
private String publishing;
private double price;
public Book17() {
}
public Book17(String bookName,String writer) {
this.bookName=bookName;
this.writer=writer;
}
//限定作者/书名均为只读属性
public String getBookName() {
return bookName;
}
public String getWriter() {
return writer;
}
public String getPublishing() {
return publishing;
}
public void setPublishing(String publishing) {
this.publishing = publishing;
}
//限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10
public double getPrice() {
return price;
}
public void setPrice(double price) {
if(price<=10) {
System.out.println("图书的价格最低十元!");
this.price=10;
}
else
this.price = price;
}
//信息介绍方法描述图书所有信息
public void introduce() {
System.out.println("书名:" + this.getBookName() + "\n作者:" + this.getWriter() + "\n出版社:" + this.getPublishing() + "\n价格:"
+ this.getPrice());
}
}public static void main(String[] args) {
// TODO Auto-generated method stub
Book17 one=new Book17("红楼梦","曹雪芹");
one.setPrice(9.8);
one.setPublishing("人民文学出版社");
one.introduce();
System.out.println("================================");
Book17 two=new Book17("小李飞刀","古龙");
two.setPrice(55.5);
two.setPublishing("中国长安出版社");
two.introduce();
}
}老师我的代码哪里需要优化吗?
老师为什么最先输出“图书价格最低10元”这句话?
get方法的值是从哪里获取的,过程是怎样的?他是跟带参构造传参数值的吗?
3
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小班
2019-10-21 15:56:30
同学你好,1、复制运行贴出代码,运行效果没有问题,很棒呐。
2、最先输出“图书价格最低10元”是因为在执行图书价格的赋值语句需要先执行,在执行过程中,价格不符合条件,输出提示语句,并将价格强制赋值为10,就会先输出这个语句啦。
而introduce方法输出所有的信息在赋值语句之后执行,所以"图书价格最低10元”会在前面输出。
3、get方法是在对象实例化后,才能调用,当调用构造方法,实例化这个对象后,get方法返回实例化后中这个属性的值,比如 调用的是有参的构造方法,返回的就是通过参数赋值给属性的值, 如果调用的无参的构造方法,返回的就是这个属性的默认值。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
相似问题
登录后可查看更多问答,登录/注册
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星