1-7封装编程练习

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();
	}

}
  1. 老师我的代码哪里需要优化吗?

  2. 老师为什么最先输出“图书价格最低10元”这句话?

  3. get方法的值是从哪里获取的,过程是怎样的?他是跟带参构造传参数值的吗?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小班 2019-10-21 15:56:30

同学你好,1、复制运行贴出代码,运行效果没有问题,很棒呐。

    2、最先输出“图书价格最低10元”是因为在执行图书价格的赋值语句需要先执行,在执行过程中,价格不符合条件,输出提示语句,并将价格强制赋值为10,就会先输出这个语句啦。

而introduce方法输出所有的信息在赋值语句之后执行,所以"图书价格最低10元”会在前面输出。

    3、get方法是在对象实例化后,才能调用,当调用构造方法,实例化这个对象后,get方法返回实例化后中这个属性的值,比如 调用的是有参的构造方法,返回的就是通过参数赋值给属性的值, 如果调用的无参的构造方法,返回的就是这个属性的默认值。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师