老师,麻烦讲解一下,为什么构造方法是这样写的?

老师,麻烦讲解一下,为什么构造方法是这样写的?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class BookTest {
 
    public static void main(String[] args) {
        Book a=new Book("红楼梦","曹雪芹");
        Book b=new Book("小李飞刀""古龙");
        a.setBookHouse("人民文学出版社");
        b.setBookHouse("中国长安出版社");
        a.setPrices(8);
        b.setPrices(55.5);
        System.out.println(a.info());
        System.out.println("================================");
        System.out.println(b.info());
    }
 
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Book {
    private String bookName,author,bookHouse;
    private double prices;
    public String getBookName() {
        return bookName;
    }
 
    public String getAuthor() {
        return author;
    }
    public Book(String bookName,String author) {
        this.bookName=bookName;
        this.author=author;
    }
    public String getBookHouse() {
        return bookHouse;
    }
    public void setBookHouse(String bookHouse) {
        this.bookHouse = bookHouse;
    }
    public double getPrices() {
        return prices;
    }
    public void setPrices(double prices) {
        if(prices<=10) {
            System.out.println("图书价格最低为10元");
            this.prices=10.0;
        }else
            this.prices = prices;
    }
    public String info() {
        String info="书名:"+this.getBookName()+"\n作者:"+this.getAuthor()+"\n出版社:"+this.getBookHouse()+"\n价格"+this.getPrices()+"元";
        return info;
    }
}


正在回答

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

2回答

        同学你好,这里可以这样理解,1、构造方法可以将多个参数传入,在初始化对象的时候,将属性一一赋值,但是单个的set方法,只能对本属性来赋值哦!

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

如上就是对书名和作者的赋值哦!

    2、通常的构造方法中是对属性的赋值,比如:this.bookName=bookName;是对书名属性的赋值,但是没有任何判断哦!

    3、set方法可以对属性的添加进行判断哦,同样可以将属性赋值的set方法用于构造方法中,比如:

1
2
3
4
5
 public Book(String bookName,String author,double prices) {
        this.bookName=bookName;
        this.author=author;
        this.setPrices(prices);//通过set方法对属性赋值
    }

如上就是通过setPrices方法添加了判断对属性的赋值哦!

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

好帮手慕小班 2019-07-12 12:16:00

        同学你好,这里同学是想问构造方法中为什么没有对价格和出版社进行赋值吗?

如果是这个问题,这里根据题目要求, 限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10,所以对价格的赋值,直接使用了set方法进行赋值了哦!所以没有在构造方法中直接赋值。

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

  • 提问者 慕无忌4195766 #1
    我是想问构造方法传参数和get/set的方法有什么区别,功能上。
    2019-07-12 12:41:08
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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