题目要求通过构造方法实现属性赋值,那还要set/get方法干嘛

题目要求通过构造方法实现属性赋值,那还要set/get方法干嘛

1、set/get不就是对属性进行写入和读取吗?构造方法对属性赋值了,那set/get就没有意义了啊

2、如果作者、书名设置成只读属性还怎么和其他属性一起从test类中写入

===========================================================

public class Book {

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

    private String name;

    private String author;

    private String press;

    private double price;

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

    public Book(){


    }

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

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

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

    */

    public void setName(String name){

        this.name=name;

    }

    public String getName(){

        return this.name;

    }

     public void setAuthor(String author){

        this.author=author;

    }

    public String getAuthor(){

        return this.author;

    }

     public void setPress(String press){

        this.press=press;

    }

    public String getPress(){

        return this.press;

    }

     public void setPrice(double price){

        if(price<10)

            System.out.println("图书价格必须大于10");

        else

            this.price=price;

    }

    public double getPrice(){

        return this.price;

    }

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

    public void inforMation(){

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

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

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

        if(this.getPrice()==0)

            return;

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

    }


}

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

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

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

2回答
好帮手慕阿满 2019-07-13 17:57:47

同学你好,关于只读属性,可以通过getName()等读取book的信息。在同学后回复贴出来的代码中,Book类中缺少了inforMation()方法,在inforMation()方法中,可以读取book的信息并输出。另外建议同学贴代码时,一定要贴在回答中,选择代码语言,不要贴在回复中,会失去代码格式的。

祝:学习愉快~

好帮手慕阿满 2019-07-13 16:15:18

同学你好,使用构造方法可以在定义对象的同时给属性赋值,使用set方法也可以属性赋值,通常建议在构造方法中,使用set方法对属性赋值,如:

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

限制作者和书名为只读属性,意思是不能有set方法,只能通过构造方法给属性赋值。

    所以在同学的代码中,建议在Book类中,1、不能有作者和书名的set方法。2、定义带参构造方法,在带参构造方法中,给属性赋值,作者和书名使用this.name = name这种方法,而出版社和价格则使用set的方法给属性赋值,具体可以参考截图。2、在测试类中,使用带参构造方法定义对象。

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

  • 提问者 敏捷丶 #1
    老师的意思是这样改吗,这下所有的赋值都在创建对象的时候进行,那只读又有什么意义,那在test类中依然可以写入信息啊。 BookTest类 public class BookTest { // 测试方法 public static void main(String[] args) { //实例化对象,调用相关方法实现运行效果 Book book1=new Book("红楼梦","曹雪芹","人民文学出版社",10); Book book2=new Book("小李飞刀","古龙","中国长安出版社",55.5); book1.inforMation(); System.out.println("================================="); book2.inforMation(); } } Book类部分代码 public class Book { //私有属性:书名、作者、出版社、价格 private String name; private String author; private String press; private double price; //通过构造方法实现属性赋值 public Book(String name,String author,String press,double price){ this.name=name; this.author=author; this.setPress(press); this.setPrice(price); } /*通过公有的get/set方法实现属性的访问,其中: 1、限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10 2、限定作者、书名均为只读属性 */ public String getName(){ return this.name; } public String getAuthor(){ return this.author; } public void setPress(String press){ this.press=press; } public String getPress(){ return this.press; } public void setPrice(double price){ if(price<10) System.out.println("图书价格必须大于10"); else this.price=price; } public double getPrice(){ return this.price; }
    2019-07-13 16:46:57
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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