金俊伊
2021-02-04 03:53
采纳率: 75%
浏览 85
已采纳

java初学者遇到一个问题 有几行代码不是完全明白 希望大佬指点

这是书上一道例题 想每一行代码都完全弄清楚 标注的地方是我的理解 有三行代码是我不明白的 如果有任何错误的地方请指出 感谢感谢

class CashRegister{

 

   public CashRegister()   {  //将CashRegister两个参数的初始值设为0

      purchase = 0;

      payment = 0;

   }

 

   public void recordPurchase(double amount)   {  //总数=0+购买金额 //purchase=total 赋值到total

      double total = purchase + amount;

      purchase = total;

   }

 

 

   public void enterPayment(double amount)   {   //收到付款的参数

      payment = amount;

   }

 

 

   public double giveChange()   {        //找钱的参数

                                     //double找钱=付款-价格

  

      double change = payment - purchase;

      purchase = 0;                     //???

      payment = 0;                     //???

      return change;                    //返回找钱的数值

   }

 

   private double purchase;               //这里两个private是为什么?

   private double payment;

 

}

 

public class CashRegisterTester{           //driver

 

   public static void main(String[] args)   {  //main方法

      CashRegister register = new CashRegister();    //新建一个对象register

      register.recordPurchase(29.50);              //购买价值29.5

      register.recordPurchase(9.25);              //购买价值9.25

      register.enterPayment(50);                //付50

      double change = register.giveChange();  //新建一个change参数 调用register.giveChange方法

      System.out.println(change);     

   }

}

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • SoftwareTeacher 2021-02-04 04:13
    已采纳

    >   private double purchase;               //这里两个private是为什么?

    >   private double payment;

    回答:是为了存储两个变量的值。private 的意思是不让外界直接改版它们,而要通过函数 recordPurchase(), enterPayment() 来改变。 

     

    >   purchase = 0;                     //???

    >    payment = 0;                     //???

    回答:是为了清零这两个数值,表示这一笔交易结束了,为下一次交易做准备。 

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 从wu开始 2021-02-04 09:33

    为什么要用private修饰两个变量?

    首先Java三大特性:封装,继承和多态。(封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。搜索得到)封装的一种表现就是将变量私有化,只能本类调用,不允许其他的类的访问

    评论
    解决 1 无用
    打赏 举报
  • 保质期已过 2021-02-08 21:30
    /**
     * 构造函数,在对象创建的时候调用 即 new CashRegister()调用
     */
    public CashRegister()   {  //将CashRegister两个参数的初始值设为0
        purchase = 0;
        payment = 0;
    }
    
    public void recordPurchase(double amount)   {  //总数=0+购买金额 //purchase=total 赋值到total
        double total = purchase + amount;
        purchase = total;
    }
    
    public void recordPurchase2(double amount)   {  //总数=0+购买金额 //purchase=total 赋值到total
        purchase += amount;
    }
    
    public void enterPayment(double amount)   {   //收到付款的参数
        payment = amount;
    }
    
    public double giveChange()   {        //找钱的参数
        //double找钱=付款-价格
        double change = payment - purchase;
        purchase = 0;                     //???重新复制为0,为下次计算做准备,防止上次内容带到下次计算中,我觉得也可以不用要,在使用new CashRegister()会赋值一次
        payment = 0;                      //???同上
        return change;                    //返回找钱的数值
    }
    
    
    /**
     * 这里两个private是为什么?
     * private是java关键字,表示属性私有化,即在本类才能访问,是java封装特性的一种方式,如果在其他类中要访问这两个属性提供公共的get,set方法即可
     */
    private double purchase;
    private double payment;
    
    /**
     * get方法
     * @return
     */
    public double getPurchase() {
        return purchase;
    }
    /**
     * set方法
     * @param purchase
     */
    public void setPurchase(double purchase) {
        this.purchase += purchase;
    }
    /**
     * get方法
     * @return
     */
    public double getPayment() {
        return payment;
    }
    /**
     * set方法
     * @param payment
     */
    public void setPayment(double payment) {
        this.payment = payment;
    }
    
    /**
     * 测试使用set 方法设置属性值
     * @param args
     */
    public static void main(String[] args) {
        CashRegister register = new CashRegister();
        register.setPurchase(29.50);
        register.setPurchase(9.25);
        register.setPayment(50);
        double change = register.giveChange();
        System.out.println(change);
    }
    评论
    解决 1 无用
    打赏 举报
  • 毕小宝 2021-02-05 15:30

    首先,第一行注释的地方,其实是构造函数定义,这里面的两个赋值操作可以省略,数值型的成员变量默认值就是0;

    其次,第二行,记录购买金额,就是累加购买金额;

    第三,设置支付金额,就是修改类的成员变量 payment。

    这个就是定义了一个类,包含两个成员变量,提供了两个方法来操作这两个成员变量。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题