麻烦老师检查

麻烦老师检查

public class BookTest {
    public static void main(String[] args) {
        Book b1=new Book("红楼梦","曹雪芹","人民文学出版社",9);
        b1.displayInfor();
        System.out.println("==============================");
        Book b2=new Book("小李飞刀","古龙","中国长安出版社",55.5);
        b2.displayInfor();
    }
    }

public class Book {
    private String name;
    private String author;
    private String press;
    private double price;
    public String getName()
    {
        return name;
    }
    public String getAuthor() {
        return author;
    }
    public String getPress() {
        return press;
    }
    public double getPrice() {
        return price;
    }
    public Book(String name, String author, String press,double price)
    {
        this.name=name;
        this.author=author;
        this.press=press;
        this.price=price;
        if (price<10)
        {
            System.out.println("图书价格最低10元");
            price=10;
        }
        this.price=price;
    }
  public void displayInfor(){
        System.out.println("书名:"+name+"\n"+"作者:"+author+"\n"+"出版社:"+press+"\n"+"价格:"+price);
  }
}

正在回答

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

2回答

同学你好,运行贴出代码,整体完成不错,但是还有以下优化的空间:

        1、同学在构造方法中对价格进行了校验,这里老师建议同学将构造方法中的去掉,将价格的校验保存在set方法中,例如:

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

        2、去掉之后,同学在构造方法中调用setPrice(double price)方法对价格赋值即可

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

  • qq_慕斯829143 提问者 #1
    老师为什么不能在构造方法里检验
    2019-11-19 19:42:13
好帮手慕小班 2019-11-20 10:01:54

同学你好,1、在构造方法中可以做校验,这是没有错误的。上面的修改内容,只是老师的建议。

        2、根据题目要求,实现get/set方法实现对属性的访问、修改,对应我们要添加对price等属性的get/set方法。

        3、set方法是给属性赋值,当我们需要对类中的某个属性进行单独的赋值或修改时,同样需要添加对接收属性的内容进行判断,比如:当我们需要对这个图书对象的价格进行修改时,调用它的set方法,同样需要对属性进行判断不能低于10。

    综上所述,我们可以将属性的判断赋值内容写在set方法中,然后在构造方法里调用,这样会更符合封装的特性。

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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