对象封装-储值卡

封装:封装的主要目的就是隐藏对象细节,将对象当做黑箱操作。
在Java中取值方法的名称形式是固定的,也就是以get开头,之后接上首字母大写的单词。

package cc.openhome;
import java.util.Scanner;
    class  CashInf
    {
        String number;
        int balance;
        int bonus;
        CashInf(String a,int b,int c){
            this.number=a;
            this.balance=b;
            this.bonus=c;
    }

        public void store(int money)
        {
            if(money>0)
            { this.balance+=money;
                if(money>=1000)
                    this.bonus++;}
            else
            System.out.println("储值为负,你是来捣乱的吗");

        }
        public void change(int money)
        {
            if(money>0)
            { if(money<=this.balance)
                {
                    this.balance-=money;
                }
                else{
                System.out.println("钱不够了");
                }}
            else{
                System.out.println("Are you kindding me?");
            }
        }
            int exchange(int bonus)
            {
                if(bonus>0)
                {
                    this.bonus-=bonus;
                }
                return this.bonus;
            }

    }

建立一个类,并抒写构造函数,定义方法,以便节省重复代码。
store():储存时候调用的方法;
exchange():扣款时候调用的方法;
inexchange():兑换红利点数时候调用的方法;

public class CashCard {
   public static void main(String[] args) {
      //不需要单独设置对象,可以直接设置一个数组进行赋值
      CashInf[] cash={
          new CashInf("A001",500,0),new CashInf("A002",300,0),new CashInf("A003",1000,1),
          new CashInf("A004",2000,2),new CashInf("A005",3000,3)  };
    //输出用户信息 
    //for(CashInf cas:cash){
     //System.out.printf("(%s,%d,%d)%n",cas.number,cas.bonus,cas.balance);}
   //可能的操作,store,exchange,change
   Scanner scanner=new Scanner(System.in);
   for(CashInf cas:cash)
   {
       System.out.printf("(%s,%d,%d)%n",cas.number,cas.bonus,cas.balance);
       cas.store(scanner.nextInt());
       System.out.printf("明细(%s,%d,%d)%n",cas.number,cas.bonus,cas.balance);
   }
   }
}


结果展示:这里写图片描述
加强封装,所以提供取值方法成员(Get);
更改变量的权限修饰:

private String number;
        private int balance;
        private int bonus;

提供取值方法:

  int getBalance()
        {
                return balance;}
        int getBonus()
        {
                return bonus;}
        String getNumber()
        {
            return number;
        }

更改调用方式,如果还像上个程序使用对象调用变量会发生编译错误无法编译,

 System.out.printf("(%s,%d,%d)%n",cas.getNumber(),cas.getBalance(),cas.getBonus());
       cas.store(scanner.nextInt());
       System.out.printf("明细(%s,%d,%d)%n",cas.getNumber(),cas.getBalance(),cas.getBonus());

完整代码如下:


package cc.openhome;
import java.util.Scanner;
    class  CashInf
    {
        private String number;
        private int balance;
        private int bonus;
        CashInf(String a,int b,int c){
            this.number=a;
            this.balance=b;
            this.bonus=c;}

        int getBalance()
        {
                return balance;}
        int getBonus()
        {
                return bonus;}
        String getNumber()
        {
            return number;
        }
        public void store(int money)
        {
            if(money>0)
            { this.balance+=money;
                if(money>=1000)
                    this.bonus++;}
            else
            System.out.println("储值为负,你是来捣乱的吗");

        }
        public void change(int money)
        {
            if(money>0)
            { if(money<=this.balance)
                {
                    this.balance-=money;
                }
                else{
                System.out.println("钱不够了");
                }}
            else{
                System.out.println("Are you kindding me?");
            }
        }
            int exchange(int bonus)
            {
                if(bonus>0)
                {
                    this.bonus-=bonus;
                }
                return this.bonus;
            }

    }
public class CashCard {
   public static void main(String[] args) {
      //不需要单独设置对象,可以直接设置一个数组进行赋值
      CashInf[] cash={
          new CashInf("A001",500,0),new CashInf("A002",300,0),new CashInf("A003",1000,1),
          new CashInf("A004",2000,2),new CashInf("A005",3000,3)  };
    //输出用户信息 
    //for(CashInf cas:cash){
     //System.out.printf("(%s,%d,%d)%n",cas.number,cas.bonus,cas.balance);}
   //可能的操作,store,exchange,change
   Scanner scanner=new Scanner(System.in);
   for(CashInf cas:cash)
   {
       System.out.printf("(%s,%d,%d)%n",cas.getNumber(),cas.getBalance(),cas.getBonus());
       cas.store(scanner.nextInt());
       System.out.printf("明细(%s,%d,%d)%n",cas.getNumber(),cas.getBalance(),cas.getBonus());
   }
   }
}


猜你喜欢

转载自blog.csdn.net/leaflifeli/article/details/81172865