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

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

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());
	}

}
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方法用于构造方法中,比如:

 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下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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