老师,请批改,谢谢!

老师,请批改,谢谢!

public class Book {
	 //私有属性:书名、作者、出版社、价格
	private String name;
	private String writer;
	private String press;
	private float price;
	 //通过构造方法实现属性赋值
	public Book(String name,String writer,String press,float price) {
		this.setName(name);
		this.setWriter(writer);
		this.setPress(press);
		this.setPrice(price);
	}
	    /*通过公有的get/set方法实现属性的访问,其中:
	    1、限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10
	    2、限定作者、书名均为只读属性
	    */
	public String getName() {
		return name;
	}
	private void setName(String name) {
		this.name = name;
	}
	public String getWriter() {
		return writer;
	}
	private  void setWriter(String writer) {
		this.writer = writer;
	}
	public String getPress() {
		return press;
	}
	public void setPress(String press) {
		
		this.press = press;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice(float price) {
		if(price<=10) {
			System.out.println("图书价格最低10元");
			this.price=10;
		}else {
		this.price = price;
		}
	}
	
	  //信息介绍方法,描述图书所有信息
	public void news() {
		System.out.println("书名:"+this.name);
		System.out.println("作者:"+this.writer);
		System.out.println("出版社:"+this.press);
		System.out.println("价格:"+this.price);
	}
	
}

public class BookTest {

	public static void main(String[] args) {
		//实例化对象,调用相关方法实现运行效果
		Book b1= new Book("红楼梦","曹雪芹","人民文学出版社",10.0f);
		b1.news();
		System.out.println("=======================");
		Book b2= new Book("小李飞刀","古龙","中国长安出版社",55.5f);
		b2.news();		

	}

}


正在回答

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

2回答

同学你好,

set是赋值操作,同学可以参考以下思路进行理解。

1、创建对象时会调用带参构造方法

http://img1.sycdn.imooc.com//climg/5d006c90000141b805260137.jpg

2、在构造方法中为属性赋值,赋值有两种方式,

方式一:

调用set方法,即:this.setName(name);

方式二:

直接为属性赋值,即:this.name=name;

当name,writer为只读属性时,表示除了在创建对象时为它们赋值外,在其他地方无法访问到。

所以,在这里这两个属性没有public修饰的set方法。

在构造方法中需要直接为私有属性name,writer赋值。

http://img1.sycdn.imooc.com//climg/5d006cc7000195c405170082.jpg

3、方法只有被调用的时候才会执行,set方法,get方法也是如此。

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

吃吃吃鱼的猫 2019-06-12 10:54:58

同学写的很棒哦~

但是有一点需要注意,作者和书名是只读属性,所以在Book类中,作者和书名的属性不定义set方法呢~

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

  • 提问者 慕移动ttong #1
    老师,就这里没明白。 1、set不是赋值吗?如果没有赋值,那么get到的是什么? 2、是先get还是先set? 3、请老师把set和get方法的先后执行流程解释下, 谢谢!!!
    2019-06-12 11:01:48
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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