老师,请批改,谢谢!

老师,请批改,谢谢!

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
public class Book {
     //私有属性:书名、作者、出版社、价格
    private String name;
    private String writer;
    private String press;
    private float price;
     //通过构造方法实现属性赋值
    public Book(String name,String writer,String press,float price) {
        this.setName(name);
        this.setWriter(writer);
        this.setPress(press);
        this.setPrice(price);
    }
        /*通过公有的get/set方法实现属性的访问,其中:
        1、限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10
        2、限定作者、书名均为只读属性
        */
    public String getName() {
        return name;
    }
    private void setName(String name) {
        this.name = name;
    }
    public String getWriter() {
        return writer;
    }
    private  void setWriter(String writer) {
        this.writer = writer;
    }
    public String getPress() {
        return press;
    }
    public void setPress(String press) {
         
        this.press = press;
    }
    public float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        if(price<=10) {
            System.out.println("图书价格最低10元");
            this.price=10;
        }else {
        this.price = price;
        }
    }
     
      //信息介绍方法,描述图书所有信息
    public void news() {
        System.out.println("书名:"+this.name);
        System.out.println("作者:"+this.writer);
        System.out.println("出版社:"+this.press);
        System.out.println("价格:"+this.price);
    }
     
}
 
public class BookTest {
 
    public static void main(String[] args) {
        //实例化对象,调用相关方法实现运行效果
        Book b1= new Book("红楼梦","曹雪芹","人民文学出版社",10.0f);
        b1.news();
        System.out.println("=======================");
        Book b2= new Book("小李飞刀","古龙","中国长安出版社",55.5f);
        b2.news();     
 
    }
 
}


正在回答

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

2回答

同学你好,

set是赋值操作,同学可以参考以下思路进行理解。

1、创建对象时会调用带参构造方法

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

2、在构造方法中为属性赋值,赋值有两种方式,

方式一:

调用set方法,即:this.setName(name);

方式二:

直接为属性赋值,即:this.name=name;

当name,writer为只读属性时,表示除了在创建对象时为它们赋值外,在其他地方无法访问到。

所以,在这里这两个属性没有public修饰的set方法。

在构造方法中需要直接为私有属性name,writer赋值。

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

3、方法只有被调用的时候才会执行,set方法,get方法也是如此。

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

吃吃吃鱼的猫 2019-06-12 10:54:58

同学写的很棒哦~

但是有一点需要注意,作者和书名是只读属性,所以在Book类中,作者和书名的属性不定义set方法呢~

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

  • 提问者 慕移动ttong #1
    老师,就这里没明白。 1、set不是赋值吗?如果没有赋值,那么get到的是什么? 2、是先get还是先set? 3、请老师把set和get方法的先后执行流程解释下, 谢谢!!!
    2019-06-12 11:01:48
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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