java教材源代码第5章类和对象.docx

上传人:b****1 文档编号:12512585 上传时间:2023-04-19 格式:DOCX 页数:18 大小:17.94KB
下载 相关 举报
java教材源代码第5章类和对象.docx_第1页
第1页 / 共18页
java教材源代码第5章类和对象.docx_第2页
第2页 / 共18页
java教材源代码第5章类和对象.docx_第3页
第3页 / 共18页
java教材源代码第5章类和对象.docx_第4页
第4页 / 共18页
java教材源代码第5章类和对象.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

java教材源代码第5章类和对象.docx

《java教材源代码第5章类和对象.docx》由会员分享,可在线阅读,更多相关《java教材源代码第5章类和对象.docx(18页珍藏版)》请在冰豆网上搜索。

java教材源代码第5章类和对象.docx

java教材源代码第5章类和对象

第5章类和对象

【例5-1】定义“银行账户”类的构造方法,实现对银行账户属性变量的赋值操作。

Cust(StringnewName,intnewID,StringnewPWD,intnewMoney){

name=newName;

ID=newID;

PWD=newPWD;

money=newMoney;

}

5.2案例分析:

银行账户对象的创建

本例的代码如下:

classCust{

Stringname;

intID;

StringPWD;

intmoney;

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("用户姓名:

"+name);

System.out.println("用户账号:

"+ID);

System.out.println("账户余额:

"+money);

}

voidchangePWD(StringnewPWD){

PWD=newPWD;

}

}

classMainDemo{

publicstaticvoidmain(String[]args){

CustmyCust=newCust("Tom",100,"11111",10000);

myCust.setMoney(5000);

myCust.getMoney(3000);

myCust.changePWD("Tom");

myCust.search();

}

}

【例5-4】静态方法与实例方法的区别。

publicclassStaticDemo{

staticdoublepi=3.14;//静态变量,类变量

doublepix=3.14;//实例变量,对象变量

doublegetArea(){//实例方法

returnpi*3*3;//类变量,实例方法能用类变量

}

staticdoublegetArea1(){

returnpi*3*3;//类方法能用类变量

}

doublegetArea2(){

returnpix*3*3;//实例方法能用实例变量

}

//staticdoublegetArea3(){

//returnpix*3*3;//类方法不能用实例变量

//}

}

【例5-5】静态成员的加法运算。

classHasStatic{

privatestaticintx=100;

publicstaticvoidmain(Stringargs[]){

HasStatichs1=newHasStatic();

HasStatichs2=newHasStatic();

hs1.x++;

hs2.x++;

hs1.x++;

System.out.println("x="+x);

}

}

【例5-6】为Cust类写两个构造方法,一个构造方法利用this关键字调用有参构造方法,另一个为有参构造方法,参数分别为姓名,账号、密码及余额。

Cust(){

this("Tom",100,"12345",10000);

}

Cust(StringnewName,intnewID,StringnewPWD,intnewmoney){

name=newName;

ID=newID;

PWD=newPWD;

money=newmoney;

}

【例5-7】重载Cust类的构造方法,一个为无参构造方法实现成员变量的初始化,另一个为有参构造方法,实现形参到成员变量的赋值。

Cust(){

name="";

ID=0;

PWD="";

money=0;

}

Cust(StringnewName,intnewID,StringnewPWD,intnewmoney){

name=newName;

ID=newID;

PWD=newPWD;

money=newmoney;

}

5.5案例分析:

银行账户类构造方法的重载

本例的代码如下:

classCust{

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;

allNum++;

selfNum=allNum;

}

voidgetMoney(intgetMoney){

money=money-getMoney;

}

voidsetMoney(intsaveMoney){

money=money+saveMoney;

}

voidsearch(){

System.out.println("所属银行:

"+Cust.bankName);

System.out.println("您是本银行的"+allNum+"个顾客中的第"+

selfNum+"个顾客");

System.out.println("用户姓名:

"+name);

System.out.println("用户账号:

"+ID);

System.out.println("账户余额:

"+money);

}

voidchangePWD(StringnewPWD){

PWD=newPWD;

}

voidsetInfo(StringnewName,intnewID,StringnewPWD,intnewmoney){

name=newName;

ID=newID;

PWD=newPWD;

money=newmoney;

}

}

classDemo{

publicstaticvoidmain(String[]args){

Custst1=newCust("Tom",100,"11111",10000);

Custst2=newCust();

st1.setMoney(5000);

st1.getMoney(3000);

st1.changePWD("Tom");

st1.search();

st2.setInfo("Jerry",200,"22222",10000);

st2.setMoney(10000);

st2.getMoney(5000);

st2.changePWD("Jerry");

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代码如下:

packagelession3;

/**

*相同package的公开访问权限类

*/

publicclassPublicClassSamePackage{

publicStringtoString(){

  return"相同package的公开类";

 }

}

在lession3包中DefaultClassSamePackage.java代码如下:

packagelession3;

/**

*相同package的公开访问权限类

*/

publicclassPublicClassSamePackage{

 publicStringtoString(){

  return"相同package的公开类";

 }

}

在lession3.otherpackage包中PublicClassOtherPackage.java代码如下:

packagelession3.otherpackage;

/**

*其他package的公开访问权限类

*/

publicclassPublicClassOtherPackage{

 publicStringtoString(){

  return"其他package的公开类";

 }

}

在lession3.otherpackage包中DefaultClassOtherPackage.java代码如下:

packagelession3.otherpackage;

/**

*不同package的默认访问权限类。

*/

classDefaultClassOtherPackage{

 publicStringtoString(){

  return"不同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;

staticStringbankName="建设银行";

privateintselfNum=0;

staticintallNum=0;

Cust(StringnewName,intnewID,StringnewPWD,intnewmoney){

name=newName;

ID=newID;

PWD=newPWD;

money=newmoney;

allNum++;

selfNum=allNum;

}

voidgetMoney(){

System.out.print("请输入要取出的金额:

");

intn=Integer.parseInt(KB.scan());

money=money-n;

}

voidsaveMoney(){

System.out.print("请输入要储蓄的金额:

");

intn=Integer.parseInt(KB.scan());

money=money+n;

}

voidsearch(){

System.out.println("所属银行:

"+Cust.bankName);

System.out.println("您是本银行"+allNum+"个顾客中的第"+

selfNum+"个顾客");

System.out.println("用户姓名:

"+name);

System.out.println("用户账号:

"+ID);

System.out.println("账户余额:

"+money);

}

voidchangePWD(){

System.out.print("请输入用户密码:

");

Stringp=KB.scan();

PWD=p;

}

intgetID(){

returnID;

}

}

classDemo{

publicstaticvoidmain(String[]args){

Custst=newCust("Tom",100,"12345",10000);

System.out.print("请输入您的ID:

");

intID=Integer.parseInt(KB.scan());

if(ID==st.getID()){

while(true){

System.out.print("1存款");

System.out.print("2取款");

System.out.print("3修改密码");

System.out.print("4查询");

System.out.print("5退出");

intn=Integer.parseInt(KB.scan());

switch(n){

case1:

st.saveMoney();break;

case2:

st.getMoney();break;

case3:

st.changePWD();break;

case4:

st.search();break;

case5:

System.exit

(1);

}

}

else{

System.out.print("您输入的ID错误!

");

}

}

}

对于案例代码修改如下:

importjava.io.BufferedReader;

importjava.io.InputStreamReader;

classKB{

//此部分代码与前述代码段相同

}

classCust{

//此部分代码与前述代码段相同

}

classDemo{

publicstaticvoidmain(String[]args){

Custst=newCust("Tom",100,"12345",10000);

System.out.print("请输入您的ID:

");

intID=Integer.parseInt(KB.scan());

if(ID==st.getID()){

run(ID);

}

else{

System.out.print("您输入的ID错误!

");

}

}

Staticvoidrun(Custst){

while(true){

System.out.print("1存款");

System.out.print("2取款");

System.out.print("3修改密码");

System.out.print("4查询");

System.out.print("5退出");

intn=Integer.parseInt(KB.scan());

switch(n){

case1:

st.saveMoney();break;

case2:

st.getMoney();break;

case3:

st.changePWD();break;

case4:

st.search();break;

case5:

System.exit

(1);

}

}

}

}

修改代码如下:

importjava.io.BufferedReader;

importjava.io.InputStreamReader;

classKB{

//此部分代码与前述代码段相同

}

classCust{

//此部分代码与前述代码段相同

//下述代码为菜单操作方法

voidrun(){

while(true){

System.out.print("1存款");

System.out.print("2取款");

System.out.print("3修改密码");

System.out.print("4查询");

System.out.print("5退出");

intn=Integer.parseInt(KB.scan());

switch(n){

case1:

st.saveMoney();break;

case2:

st.getMoney();break;

case3:

st.changePWD();break;

case4:

st.search();break;

case5:

System.exit

(1);

}

}

}

}

classDemo{

publicstaticvoidmain(String[]args){

Custst=newCust("Tom",100,"12345",10000);

System.out.print("请输入您的ID:

");

intID=Integer.parseInt(KB.scan());

if(ID==st.getID()){

st.run();

}

else{

System.out.print("您输入的ID错误!

");

}

}

}

引入对象数组存储四个银行账户的信息,修改代码如下:

importjava.io.BufferedReader;

importjava.io.InputStreamReader;

classKB{

//此部分代码与前述代码段相同

}

classCust{

//此部分代码与前述代码段相同

}

classDemo{

publicstaticvoidmain(String[]args){

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;//用于判断是否是全法的账户

while(true){

System.out.println("请输入您的ID");

intID=Integer.parseInt(KB.scan());

for(inti=0;i<4;i++){

if(ID==st[i].ID){

flag=true;

}

}

if(flag){

st[i].run();

}

else{

System.out.println("您输入的账号不正确,请重新输入");

continue;

}

System.out.println("是否还有顾客,没有请按N");

Stringstr=KB.scan();

if(str.equals("N")||str.equals("n")){

break;

}

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 司法考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1