java教材源代码第5章类和对象文档格式.docx
《java教材源代码第5章类和对象文档格式.docx》由会员分享,可在线阅读,更多相关《java教材源代码第5章类和对象文档格式.docx(18页珍藏版)》请在冰点文库上搜索。
+money);
voidchangePWD(StringnewPWD){
classMainDemo{
publicstaticvoidmain(String[]args){
CustmyCust=newCust("
Tom"
100,"
11111"
10000);
myCust.setMoney(5000);
myCust.getMoney(3000);
myCust.changePWD("
);
myCust.search();
【例5-4】静态方法与实例方法的区别。
publicclassStaticDemo{
staticdoublepi=3.14;
//静态变量,类变量
doublepix=3.14;
//实例变量,对象变量
doublegetArea(){//实例方法
returnpi*3*3;
//类变量,实例方法能用类变量
staticdoublegetArea1(){
//类方法能用类变量
doublegetArea2(){
returnpix*3*3;
//实例方法能用实例变量
//staticdoublegetArea3(){
//returnpix*3*3;
//类方法不能用实例变量
//}
【例5-5】静态成员的加法运算。
classHasStatic{
privatestaticintx=100;
publicstaticvoidmain(Stringargs[]){
HasStatichs1=newHasStatic();
HasStatichs2=newHasStatic();
hs1.x++;
hs2.x++;
x="
+x);
【例5-6】为Cust类写两个构造方法,一个构造方法利用this关键字调用有参构造方法,另一个为有参构造方法,参数分别为姓名,账号、密码及余额。
Cust(){
this("
12345"
Cust(StringnewName,intnewID,StringnewPWD,intnewmoney){
money=newmoney;
}
【例5-7】重载Cust类的构造方法,一个为无参构造方法实现成员变量的初始化,另一个为有参构造方法,实现形参到成员变量的赋值。
Cust(){
name="
;
ID=0;
PWD="
money=0;
5.5案例分析:
银行账户类构造方法的重载
Stringname;
intID;
StringPWD;
intmoney;
staticStringbankName="
建设银行"
intselfNum=0;
staticintallNum=0;
Cust(){
name="
ID=0;
PWD="
money=0;
allNum++;
selfNum=allNum;
}
Cust(StringnewName,intnewID,StringnewPWD,intnewmoney){
name=newName;
ID=newID;
PWD=newPWD;
money=newmoney;
voidgetMoney(intgetMoney){
money=money-getMoney;
voidsetMoney(intsaveMoney){
money=money+saveMoney;
voidsearch(){
System.out.println("
所属银行:
+Cust.bankName);
您是本银行的"
+allNum+"
个顾客中的第"
+
selfNum+"
个顾客"
voidchangePWD(StringnewPWD){
voidsetInfo(StringnewName,intnewID,StringnewPWD,intnewmoney){
classDemo{
publicstaticvoidmain(String[]args){
Custst1=newCust("
Custst2=newCust();
st1.setMoney(5000);
st1.getMoney(3000);
st1.changePWD("
st1.search();
st2.setInfo("
Jerry"
200,"
22222"
10000);
st2.setMoney(10000);
st2.getMoney(5000);
st2.changePWD("
st2.search();
}
【例4-10】创建不同的包,并在包内创建不同的类,实现不同包间类的访问。
在lession3包中的主文件Lession3.java代码如下:
packagelession3;
//注意,我们使用了其他package的类,所以需要import进来
//注意:
路径必须为完整的路径
importlession3.otherpackage.PublicClassOtherPackage;
//public的类,可以被任何类在任何地方访问
//默认权限的类(也就是没写任何访问描述符的类)只能在当前package访问,不能被其他package的类访问
publicclassLession3{
publicstaticvoidmain(String[]args){
//调用同一package下的public访问权限类
System.out.println(newpublicClassSamePackage().toString());
//调用同一package下的默认访问权限类
System.out.println(newDefaultClassSamePackage().toString());
//调用不同package下的public访问权限类
System.out.println(newPublicClassOtherPackage().toString());
//调用不同package下的默认访问权限类
//System.out.println(newDefaultClassOtherPackage().toString());
}
在lession3包中PublicClassSamePackage.java代码如下:
/**
*相同package的公开访问权限类
*/
publicclassPublicClassSamePackage{
publicStringtoString(){
return"
相同package的公开类"
在lession3包中DefaultClassSamePackage.java代码如下:
publicStringtoString(){
在lession3.otherpackage包中PublicClassOtherPackage.java代码如下:
packagelession3.otherpackage;
*其他package的公开访问权限类
publicclassPublicClassOtherPackage{
其他package的公开类"
在lession3.otherpackage包中DefaultClassOtherPackage.java代码如下:
*不同package的默认访问权限类。
classDefaultClassOtherPackage{
不同package的默认类"
5.7案例分析:
简单的银行账户管理程序
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
classKB{
publicstaticStringscan(){
Stringstr="
try{
BufferedReaderbuf=newBufferedReader(
newInputStreamReader(System.in));
str=buf.readLine();
catch(Exceptione){}
returnstr;
classCust{
privateStringname;
privateintID;
privateStringPWD;
privateintmoney;
privateintselfNum=0;
voidgetMoney(){
System.out.print("
请输入要取出的金额:
intn=Integer.parseInt(KB.scan());
money=money-n;
voidsaveMoney(){
请输入要储蓄的金额:
money=money+n;
您是本银行"
voidchangePWD(){
请输入用户密码:
Stringp=KB.scan();
PWD=p;
intgetID(){
returnID;
classDemo{
Custst=newCust("
请输入您的ID:
intID=Integer.parseInt(KB.scan());
if(ID==st.getID()){
while(true){
System.out.print("
1存款"
2取款"
3修改密码"
4查询"
5退出"
intn=Integer.parseInt(KB.scan());
switch(n){
case1:
st.saveMoney();
break;
case2:
st.getMoney();
case3:
st.changePWD();
case4:
st.search();
break;
case5:
System.exit
(1);
}
else{
System.out.print("
您输入的ID错误!
对于案例代码修改如下:
//此部分代码与前述代码段相同
publicstaticvoidmain(String[]args){
Custst=newCust("
System.out.print("
intID=Integer.parseInt(KB.scan());
if(ID==st.getID()){
run(ID);
else{
Staticvoidrun(Custst){
while(true){
intn=Integer.parseInt(KB.scan());
switch(n){
case1:
st.saveMoney();
case2:
st.getMoney();
case3:
st.changePWD();
case4:
st.search();
case5:
System.exit
(1);
修改代码如下:
//下述代码为菜单操作方法
voidrun(){
intn=Integer.parseInt(KB.scan());
switch(n){
case1:
st.saveMoney();
case2:
st.getMoney();
case3:
st.changePWD();
case4:
st.search();
case5:
System.exit
(1);
}
Custst=newCust("
System.out.print("
intID=Integer.parseInt(KB.scan());
if(ID==st.getID()){
st.run();
引入对象数组存储四个银行账户的信息,修改代码如下:
Custst[]=newCust[4];
st[0]=newCust("
Mike"
1000,"
111"
111);
st[1]=newCust("
Bob"
2000,"
222"
222);
st[2]=newCust("
cindy"
3000,"
333"
333);
st[3]=newCust("
ruby"
4000,"
444"
444);
booleanflag=false;
//用于判断是否是全法的账户
请输入您的ID"
intID=Integer.parseInt(KB.scan());
for(inti=0;
i<
4;
i++){
if(ID==st[i].ID){
flag=true;
}
if(flag){
st[i].run();
您输入的账号不正确,请重新输入"
continue;
是否还有顾客,没有请按N"
Stringstr=KB.scan();
if(str.equals("
N"
)||str.equals("
n"
)){
break;