老师这段编程题,我有点没理解

老师这段编程题,我有点没理解

书名、作者是只读属性,那还能赋初值吗?...

是在测试方法里赋初值?

您看看我这个代码,写的对不对。

public class BookTest {


     // 测试方法

public static void main(String[] args) {

      //实例化对象,调用相关方法实现运行效果

        Book book1 =new Book("红楼梦","曹雪芹","人民文学出版社",10.0);

        Book book2 =new Book("小李飞刀","古龙","中国长安出版社",55.5);

        

        book1.book_Info(book1.getName(),book1.getAuthor(),book1.getChuban(),book1.getPrice());

        

        

        System.out.println("\n"+"*************************");

        

        book2.book_Info(book2.getName(),book2.getAuthor(),book2.getChuban(),book2.getPrice());

     }

}


-----------------------------------另一段代码---------------------------------------------



public class Book {

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

     private String name;

     private String author;

     private String chuban;

     private double price;

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

    public Book(String name,String author,String chuban,double price){

        this.name = name;

        this.author = author;

        this.chuban = chuban;

        this.price = price;

    }

    

    public String getName(){

        return this.name;

    }


    public String getAuthor(){

        return this.author;

    }

    

    public String getChuban(){

        return this.chuban;

    }

    

    public double getPrice(){

        return this.price;

    }

    


    

    public void SetChuban(String chuban){

        this.chuban = chuban;

    }

    

    public void SetPrice(double price){

        if (price<=10) {this.price=10;System.out.println("图书价格最低10元!");}

        else {this.price = price;}

    }

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

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

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

    */

    public void book_Info

    (String name,String author,String chuban,double price){

        System.out.print("书名:"+name

        +"\n"+"作者:"+author

        +"\n"+"出版社:"+chuban

        +"\n"+"价格:"+price);

    }

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



}


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

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

2回答
sugar_xp 2019-04-12 11:17:35

运行效果

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

sugar_xp 2019-04-12 11:12:37

你可以参考下我的代码对比一下

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 name;
	}

	public String getAuthor() {
		return author;
	}

	public String getPress() {
		return press;
	}

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

	public double getPrice() {
		return price;
	}

	public void setPrice(double price) {
		if (price <= 10) {
			System.out.println("图书价格最低10元");
			this.price = 10;
		} else {
			this.price = price;
		}
	}

	// 信息介绍方法,描述图书所有信息
	public void introduce() {
		System.out.println("书名:" + this.getName());
		System.out.println("作者:" + this.getAuthor());
		System.out.println("出版社:" + this.getPress());
		System.out.println("价格:" + this.getPrice() + "元");
	}

}
public class BookTest {

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


  • 提问者 敲代码的刘吉安 #1
    好的,谢谢你大佬
    2019-04-12 14:08:26
  • 请问那作者、书名可以不用set和get方法吗
    2019-04-14 19:22:47
  • 可以写get方法获取,不写set方法,就相当于设置了只读属性,也就是通过带参构造创建成功后,就不能修改这个对象的作者和书名了。祝学习愉快
    2019-04-15 11:27:52
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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