封装:封装的主要目的就是隐藏对象细节,将对象当做黑箱操作。
在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());
}
}
}