Java任务:面条对象的完善
来自CloudWiki
任务描述:封装完善面条对象
- 在现实中,餐品一旦做好,其品名,价格一般不能随便修改,库存不能小于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
商院面馆网站建了一个用户类,仿照商品类,对用户类进行封装。