老师解答一下只读好吗

老师解答一下只读好吗

package com.imooc.object;


public class Book {

//私有属性:书名,作者,出版社,价格

private String name;

private String writer;

private String publish;

private double price;

//通过带参构造方法实现属性(成员变量)赋值

public Book(String name,String writer,String publish,double price)

{

this.name=name;

this.writer=writer;

setPublish(publish);

setPrice(price);

}

//信息介绍方法,描述图书信息

public void introduce()

{

System.out.println("书名:"+this.name);

System.out.println("作者:"+this.writer);

System.out.println("出版社:"+this.publish);

System.out.println("售价:"+this.price);

}

//书名和作者均为只读属性,只有getter方法

public String getName(String name)

{

return this.name;

}

public String getWriter()

{

return this.writer;

}

public String setPublish(String publish)

{

return this.publish;

}

public void getter(String publish)

{

this.publish=publish;

}

//限定图书价格必须大户10,无效时需进行提示,并强行赋值10.0

public void setPrice(double price)

{

if(price<=10)

{

System.out.println("图书价格最低10元");

this.price=10;

}

else

{

this.price=price;

}

}

public double getPrice()

{

return this.price;

}


}

package com.imooc.object;


public class BookTest {


public static void main(String[] args) {

Book book1=new Book("红楼梦","曹雪芹","人民文学出版社",20.0);

Book book2=new Book("小李飞刀","古龙","中国长安出版社",55.5);

book1.introduce();

System.out.println("======================");

book2.introduce();


}


}

在我看来只读在我的代码没有体现,应该怎么写

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

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

1回答
THappy 2017-12-28 11:10:01

只读属性就是只有get方法没有set方法,你写的就是限定了作者、书名均为只读属性的。祝学习愉快~

  • 只读属性不应该是只能读取值而不能修改值吗?如果在构造方法里用this.name = name给name赋值的话,这样name属性虽然没有set方法,但是通过对象的赋值还是可以改变name的值呀,难道不是在name属性的get方法中把值固定写好,然后去调用吗?
    2018-02-02 12:06:19
  • THappy 回复 慕神0564840 #2
    构造方法只会在实例化对象时调用一次,所以只读的属性只有在此时可以被赋一个初值,当然,此时的赋初值不算改变,这个对象实例化以后由于没设置只读属性的set方法,它的只读属性就不能再被改变了,这就是我们所说的只读~
    2018-02-02 13:48:29
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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