1-7的编程打完了,不知道符不符合要求

1-7的编程打完了,不知道符不符合要求

先上代码;

public class Book {
      //私有属性:书名、作者、出版社、价格
         String name;
         String writer;
         String press;
         double money;
        
       
      //通过构造方法实现属性赋值

        /*通过公有的get/set方法实现属性的访问,其中:
        1、限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10
        2、限定作者、书名均为只读属性
        */
        Book(String name,String writer,String press,double money){
            this.setName(name);
            this.setWriter(writer);
            this.setPress(press);
            this.setMoney(money);
            }
        public void setName(String name){
            this.name=name;
        }

        public String getName(){
            return this.name;
        }

        public void setWriter(String writer){
            this.writer=writer;
        }

        public String getWriter(){
            return this.writer;
        }

        public void setPress(String press){
            this.press=press;
        }

        public String getPress(){
            return this.press;
        }
    
        public void setMoney(double money){
            if(money>10)
                this.money=money;
            else{
                System.out.println("图书价格最低10元");
                this.money=10;
            }
            
        }
    
        public double getMoney(){
            return this.money;
        }
    
    
      //信息介绍方法,描述图书所有信息
        public String info(){
            String str="书名:"+this.getName()+"\n作者:"+getWriter()+"\n出版社:"+getPress()+"\n价格:"+getMoney();
            return str;
            
            
        }

    }





public class BookTest {

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


任务

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

方法:信息介绍

要求:

1、 设计构造函数实现对属性赋值

2、 设置私有属性,get/set方法实现对属性的访问

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

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

5、信息介绍方法描述图书所有信息

把任务要求也贴上去了,不知道做的对不对。要求4限定作者、书名均为只读属性,我是直接对象实例化的时候就把所有参数全部都传了进来,
根本没有使用set方法传参,老师这是不是错的,因为未使用set传参,作者、书名、出版社、价格都是只读属性?


正在回答

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

2回答

并不是把所有的get,set方法都设置成私有的,而是把只读属性的set方法设置成私有的。

这里的目的是,一旦你通过带参构造创建了这个对象,你就不能通过set方法去修改了。

可以通过get方法去获取。

一旦你通过带参构造创建了这个对象,设为只读属性的就不能通过调用set方法修改了。

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

  • 鱼儿0001 提问者 #1
    摇该!(日语理解的意思) 老师,我的意思是,除了我没有在属性前添加private,还有没有把书名、作者设置为只读属性外,代码的其余部分还有没有需要修改的地方。
    2019-04-21 15:37:13
  • 好帮手慕阿莹 回复 提问者 鱼儿0001 #2
    没有了呦,加油,同学写的不错。祝学习愉快
    2019-04-21 15:43:05
好帮手慕珊 2019-04-20 15:34:58

你好!属性要求是私有的,所以在每个属性定义前加上private,如:private String name;

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

作者和书名为只读属性,是指不能在测试类中通过对象调用setName()和setWriter()方法。所以,可以将setName()和setWriter()方法设置成私有的,有就是在方法前加上private,如下所示:

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

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

  • getset方法设置私有,那我怎么对象调用啊?
    2019-04-20 20:28:33
  • 提问者 鱼儿0001 #2
    那老师,除了以上两点做的有误外,其余代码的编写有没有问题?比如构造方法,get方法、测试类等等,有没有需要修改的地方?
    2019-04-21 11:19:06
  • 提问者 鱼儿0001 回复 慕码人4259003 #3
    都设置是私有了,就是不能调用啊,而且你以为会把所有set/get方法设置成私有?肯定会留下访问接口啊
    2019-04-21 11:50:47
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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