首页 > 代码库 > Java多态

Java多态

技术分享

1.运行结果

100,200,200,201

2.当把子类对象赋值给父类对象时,该对象的成员变量还是原来的,但是成员方法使用的是子类的

3.(1)当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。

   (2)如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。如果子类方法确实想访问父类中被隐藏的同名字段,可以用super关键字来访问它。 如果子类被当作父类使用,则通过子类访问的字段是父类的!

 

//用多态实现ATM

package 课堂测验ATM;
import java.util.Scanner;
public class Zhongzhuan {
public static void main(String[] args)
{
System.out.println("请插入银行卡\n请输入密码:");
Scanner input=new Scanner(System.in);
int passward1=input.nextInt();
ZhangHu zhen= new ZhangHu("20153158","cyz","2016.11.15" ,201533,10000);
while(zhen.Judgenumber(passward1))
{
System.out.println("请输入您的选择:1.存款2.取款3.转账汇款4.修改密码5.查询余额");
int choose1=input.nextInt();
if(choose1==1)
{
zhen.SaveMoney();
}
else if(choose1==2)
{
zhen.WithdrawMoney();
}
else if(choose1==3)
{
zhen.Transfer();
}
else if(choose1==4)
{
zhen.xiugai();
}
else if(choose1==5)
{
zhen.CheckBalance();
}
}

}
}
class ZhangHu extends Zhongzhuan{
String account;
String name;
String date;
int number;
double balance;


ZhangHu(String a,String b,String c,int d,int e){
account=a;
name=b;
date=c;
number=d;
balance=e;
}

public void CheckBalance()
{
System.out.println("您的账户余额为:"+balance);
}
public void xiugai()
{
System.out.println("请输入新密码:");
Scanner input7=new Scanner(System.in);
int n=input7.nextInt();
number=n;
System.out.println("修改成功");

}
public boolean Judgenumber(int num)
{
if(num==number)
{
return true;
}
else
return false;
}
public void SaveMoney()
{
System.out.println("请输入你的存款金额");
Scanner input=new Scanner(System.in);
int sm=input.nextInt();
balance+=sm;
System.out.println("余额:"+balance);
}
public void WithdrawMoney()
{
System.out.println("请输入你的取款金额: 1.100元 2.500元 3.1000元 4.1500元 5.2000元 6.5000元 7.其它金额 8.退卡");

Scanner input=new Scanner(System.in);
int choose=input.nextInt();
if(choose==1){
if(balance<100)
System.out.println("余额不足");
else
System.out.println("取款成功");
balance-=100;
System.out.println("余额:"+balance);
}
if(choose==2){
if(balance<500)

System.out.println("余额不足");
else
System.out.println("取款成功");
balance-=500;
System.out.println("余额:"+balance);
}
if(choose==3){
if(balance<1000)
System.out.println("余额不足");
else
System.out.println("取款成功");
balance-=1000;
System.out.println("余额:"+balance);
}
if(choose==4){
if(balance<1500)
System.out.println("余额不足");
else
System.out.println("取款成功");
balance-=1500;
System.out.println("余额:"+balance);
}
if(choose==5){
if(balance<2000)
System.out.println("余额不足");
else
System.out.println("取款成功");
balance-=2000;
System.out.println("余额:"+balance);
}
if(choose==6){
if(balance<5000)
System.out.println("余额不足");
else
System.out.println("取款成功");
balance-=5000;
System.out.println("余额:"+balance);
}
if(choose==7){
System.out.println("请输入取款金额");
Scanner input3=new Scanner(System.in);
int dm2=input.nextInt();
if(balance<dm2)
System.out.println("余额不足");
else
System.out.println("取款成功");
balance-=100;
System.out.println("余额:"+balance);
}
}
public void Transfer()
{
System.out.println("请输入转账用户卡号");
Scanner input=new Scanner(System.in);
String accounts=input.next();
System.out.println("请输入转账金额");
int money=input.nextInt();
System.out.println("转账成功");
}
}

 

Java多态