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 星