Java任务:面条对象的完善

来自CloudWiki
Cloud17讨论 | 贡献2020年4月9日 (四) 08:02的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

任务描述:封装完善面条对象

  • 在现实中,餐品一旦做好,其品名,价格一般不能随便修改,库存不能小于0。如果允许随便修改上述属性,会导致程序错误的出现。本次任务要求使用面向对象编程的封装特性实现对属性的访问控制。

任务实现

前情回顾

Java对象的产生与使用中我们建立了Noodles类

类成员变量的封装

通过private修饰符使成员变量变为私有,不能在类外直接访问,只能通过成员方法访问。品名,价格,数量三个成员变量只有get方法可以获取其值,没有set方法设置其值,因此保证了三个属性是只读的。setNumber方法内加了判断,不允许库存数量为负。代码如下:

import java.util.Scanner;

public class Noodles {
	//商品的名称
	private String name;
	//商品的价格
	private float price;
	//商品的数量,
	private int num;
	
	//空构造方法	
	public Noodles(){
		
    }
	public Noodles(String n) {
		this.name = n;
	}
	public Noodles(String n,float p) {
		this.name = n;
		this.price = p;
	}
	public Noodles(String n,float p,int num) {
		this.name = n;
		this.price = p;
		this.num = num;
	}
	public String getName() {//name的读方法
		
	    return this.name;
	}
	public void setName(String newName) {//name的写方法
	     this.name = newName;
	}
	public float getPrice( ){
	   // System.out.println("该商品的价格为 : " + price); 
	    return price;
	}
	public void setPrice(float p) {
		if(p<=0) {
			System.out.println("价格必须为正!");
		}else {
		    this.price =p;
		}
	}
	public int getNum() {//num的读方法
		//System.out.println("该电影的数量为 : " + this.num); 
	    return this.num;
	}
	public void setNum(int newNum) {//num的写方法
		this.num = newNum;
	}
	public String toString() {
		String str ="名称"+this.name+ 
				    " 价格:"+this.price+
				    " 数量:"+ this.num;
		return str;
	}
	public static void main(String[] args) {                
		        System.out.println("第一份订单:");
                Noodles n1= new Noodles();//声明一个Noodle类的对象n1
                n1.setName("炸酱面");//给变量赋值
                n1.setPrice(10); //给变量赋值
                n1.setNum(2);//给变量赋值
                System.out.println(n1.toString());//打印变量
                System.out.println("名称:"+n1.getName());
                System.out.println("价格:"+n1.getPrice());
                System.out.println("数量:"+n1.getNum());                
                System.out.println();
                System.out.println("第二份订单:");
                Noodles n2= new Noodles("刀削面",15.0f,3);
                System.out.println("名称:"+n2.getName());
                System.out.println("价格:"+n2.getPrice());
                System.out.println("数量:"+n2.getNum());
                System.out.println(n2.toString());//打印变量 
        
        
	}

}

练习:完善用户类User

商院面馆网站建了一个用户类,仿照商品类,对用户类进行封装。