封装1-7编程练习疑惑咨询

封装1-7编程练习疑惑咨询

虽然我下面的代码 通过编译了,但我觉得这样的练习题目怪怪的,但是不用我下面的代码做,我实在想不出什么高招了. 

我的疑问是:根据以下题意,作者和书名均为只读属性这个要求,再看看我写的代码,是不是作者和书名为只读属性是废掉?

因为题意要求通过构造函数实现属性赋值,又要求限定作者为只读属性,在main主方法调用和赋值的时候 不得不不通过构造函数直接赋值,那限定 作者和书名为只读属性还有什么意义呢? 这个限定是不是废了一样?

 //通过构造方法实现属性赋值

    /*通过公有的get/set方法实现属性的访问,其中:

    1、限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10

    2、限定作者、书名均为只读属性

    */



public class Book {

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

    private String bookTitle;

private String bookAuthor;

private String bookPress;

private double bookPrice;

  //通过构造方法实现属性赋值


    /*通过公有的get/set方法实现属性的访问,其中:

    1、限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10

    2、限定作者、书名均为只读属性

    */

    public Book() {


}

public Book(String inputTitel,String inputAuthor,String inputPress,double inputPrice) {

this.bookTitle=inputTitel;

this.bookAuthor=inputAuthor;

this.bookPress=inputPress;

this.setBookPrice(inputPrice);

}


public String getBookTitle() {

return bookTitle;

}

public String getBookAuthor() {

return bookAuthor;

}

public String getBookPress() {

return bookPress;

}

public double getBookPrice() {

return bookPrice;

}

public void setBookPrice(double setPrice) {

if(setPrice>10) {

bookPrice=setPrice;

}else {

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

bookPrice=10;

}

}


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

public void showInfo() {

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

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

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

System.out.println("价格:"+getBookPrice());

}


}


正在回答

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

2回答

同学的代码完成的不错,不过根据要求,只限制作者和书名是只读属性,所以还可以给出版社加上set方法。关于同学的问题:只有get方法是只读属性,所以同学理解的不错。另外限制作者和书名为只读属性,在定义对象后,对象的作者和书名不可再改变,否则,作者和书名可以再次修改 。

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

  • 苞芘的爸爸 提问者 #1
    主方法调用Book类的构造方法:Book RedBook=new Book("红楼梦","曹雪芹","人民文学出版社",10)是可以直接写书名和作者的, 在Book类里 只有get有什么意义吗?是不是对作者和书名做的只读属性形同虚设了?
    2019-03-24 10:37:07
  • 好帮手慕阿莹 回复 提问者 苞芘的爸爸 #2
    并不是哟,这里在构造方法中可以赋值,也就是只有创建这个对象的时候可以给它赋值,不能对这个属性中没有set方法的这两个属性做修改了,只能同get读取,所以是只读属性呦,没有办法这个对象的没有set的属性了,如果同学说,我可以再调用构造方法修改呀,但就是新new的另一个对象了,就不是之前的对象了呦。 如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2019-03-25 11:39:58
提问者 苞芘的爸爸 2019-03-23 21:22:03

补充: main方法在这里:

public class BookTest {

     // 测试方法

public static void main(String[] args) {

      //实例化对象,调用相关方法实现运行效果

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

RedBook.showInfo();

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

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

Knife.showInfo();

     }

}


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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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