多态课后作业

运行以下代码:

回答问题

1.   左边的程序运行结果是什么?

2.   你如何解释会得到这样的输出?

3.   计算机是不会出错的,之所以得

                  到这样的运行结果也是有原因的,

                  那么从这些运行结果中,你能总

                  结出Java的哪些语法特性?

 请务必动脑总结,然后修改或编写一些代码进行测试,验证自己的想法,最后再看         后面的PPT给出的结论。

运行结果:

总结:

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

这个特性实际上就是面向对象“多态”特性的具体表现。

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

如果子类被当作父类使用,则通过子类访问的字段是父类的!

牢记:在实际开发中,要避免在子类中定义与父类同名      的字段。不要自找麻烦!——但考试除外,考试    中出这种题还是可以的。

用多态的方法模拟ATM操作流程。

 源代码:

import java.util.Scanner;

interface fangfa {

public void show();

public void qukuan();

public void cunkuan();

public void zhuanzhang();

public void setAcount(String string, String string2, String string3, String string4, double i);

public String getMima();

}

class atm implements fangfa {
String kahao;
String name;
String date;
double cun;
String mima;

public atm() {

}

public atm(String kahao, String name, String date, String mima, double cun) {

this.kahao = kahao;
this.name = name;
this.date = date;
this.mima = mima;
this.cun = cun;
}

public void setAcount(String kahao, String name, String date, String mima, double cun) {

this.kahao = kahao;
this.name = name;
this.date = date;
this.mima = mima;
this.cun = cun;
}

public String getkahao() {
return kahao;
}

public String getName() {
return name;
}

public String getDate() {
return date;
}

public String getMima() {
return mima;
}

public double getCun() {
return cun;
}

public void show() {
System.out.println("余额为:" + cun);
}

public void cunkuan() {
System.out.println("请输入存款金额:");
Scanner s = new Scanner(System.in);
cun += s.nextDouble();
show();
}

public void zhuanzhang() {
atm q = new atm();
Scanner s = new Scanner(System.in);
System.out.println("请输入对方卡号:");
q.kahao = s.nextLine();
System.out.println("请输入转账金额:");
double zhuan = s.nextDouble();
cun = cun - zhuan;
q.cun = q.cun + zhuan;
show();
}

public void qukuan() {
boolean f = true;
while (f) {
System.out.println("1、100元");
System.out.println("2、500元");
System.out.println("3、1000元");
System.out.println("4、1500元");
System.out.println("5、2000元");
System.out.println("6、5000元");
System.out.println("7、其他金额");
System.out.println("8、退卡");
System.out.println("9、返回");
System.out.println("请选择");
Scanner s = new Scanner(System.in);
int ch = s.nextInt();
switch (ch) {
case 1:
cun = cun - 100;
show();
break;
case 2:
cun = cun - 500;
show();
break;
case 3:
cun = cun - 1000;
show();
break;
case 4:
cun = cun - 1500;
show();
break;
case 5:
cun = cun - 2000;
show();
break;
case 6:
cun = cun - 5000;
show();
break;
case 7:
System.out.println("请输入取款金额:");
double qu = s.nextDouble();
cun = cun - qu;
show();
break;
case 8:
f = false;
break;
case 9:
f = false;
break;

}
}
}

}

public class Caozuo {

public static void main(String[] args) {

fangfa a = new atm();
a.setAcount("111111111111", "nasdf", "199508030048", "123456", 20000);
System.out.println("请输入密码:");
Scanner aa = new Scanner(System.in);
String ba = aa.nextLine();
if (ba.equals(a.getMima()))

while (true) {

System.out.println("1、取款");
System.out.println("2、存款");
System.out.println("3、转账");
System.out.println("4、查询");
System.out.println("请选择:");
Scanner s = new Scanner(System.in);
int b = s.nextInt();
switch (b) {
case 1:
a.qukuan();
break;
case 2:
a.cunkuan();
break;
case 3:
a.zhuanzhang();
break;

case 4:
a.show();
}
}
}
}

结果截图:

原文地址:https://www.cnblogs.com/liulitianxia/p/6082446.html