请问老师是否有需要优化的地方

请问老师是否有需要优化的地方

package com.animal;


public class Book {

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

   private String name;

   private String user;

   private String chubanshe;

   private double jiage;

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

   public Book(){

       

   }

   public Book(String name,String user) {

   this.name=name;

   this.user=user;

   }

   public Book(String name,String user,String chubanshe,double jiage){

       this.name=name;

       this.user=user;

       this.chubanshe=chubanshe;

       this.jiage=jiage;

   }

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

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

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

    */

   public String  getName(){

        return name;

   }

   public String  getUser(){

       return user;

   }

   

   public void setChubanshe(String chubanshe){

       this.chubanshe=chubanshe;

   }

   public String getChubanshe(){

       return chubanshe;

   }

   

   public void setJiage(double d){

       if(d<10){

       System.out.println("价格必须大于10元!接下来将强行定价为10元");

       this.jiage=10.0;

       }else{

           this.jiage=d;

       }

       

   }

   public double getJiage(){

       return jiage;

   }

   

   

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

  public void show1(){

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

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

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

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

  }

 


public static void main(String[] args) {


}


}


package com.animal;


public class BookTest {


public static void main(String[] args) {

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

one.show1();

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

//因为前面已经把书名和作者名都改成了在只读属性,不能使用set方法重新赋值,所以一定要创建一个带参的构造方法,并且这个构造方法要包含这两个属性

Book two=new Book("小李飞刀","古龙");

two.setChubanshe("中国长安出版社");

two.setJiage(55.5);

two.show1();


}


}


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

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

3回答
基地荒影机甲辛型 2020-05-01 22:04:01

名字和价格为只读,所以setName和setPrice设置成private比较好

  • 同学你好,同学的想法是正确的,很棒!题中规定的是作者和书名为只读属性哦~ 祝学习愉快~
    2020-05-05 10:21:33
好帮手慕小尤 2020-04-30 10:07:43

同学你好,如果当你对设置的参数有一定的要求时,例如年龄不可以为负数。同学可以通过在set方法中写个判断语句设置一下,并且在带参构造中调用set方法,这样,同学设置年龄时就被加了一层保障。如果在构造方法中按照原来的直接给属性赋值,则有可能不按照规则来设置属性值。所以建议同学在构造方法同通过setJiage();设置价格。

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

好帮手慕阿慧 2020-04-29 11:34:43

同学你好,测试方法中你的理解是正确的。在构造方法中应该调用setJiage方法设置价格。

如下图:

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

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

  • 提问者 慕仰1373184 #1
    请问老师为什么要这么写呢?我在下面不是写了价格和出版社的get/set方法了么,为什么这里不能用this.jiage=jiage,而是用setJiage(0);setJiage(jiage);
    2020-04-29 22:00:37
  • 慕村0416954 回复 提问者 慕仰1373184 #2
    因为你判断价格的逻辑写在set方法里,而你实例化调用的是构造方法,如果你构造方法仅仅用this.赋值,却没有使用使用set,相当于没有使用判断逻辑,我这么理解的。
    2020-05-11 09:46:54
  • 同学你好,你的理解是正确的。祝学习愉快!
    2020-05-11 13:51:18
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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