zoukankan      html  css  js  c++  java
  • 多态课后作业

    运行以下代码:

    回答问题

    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();
    }
    }
    }
    }

    结果截图:

  • 相关阅读:
    ElasticSearch基础之批量操作(mget+mbulk)
    ElasticSearch基础+文档CRUD操作
    Flask_restful 插件实战笔记——基本概念与使用
    Django rest framework之序列化小结
    我所理解的Restful API最佳实践
    ElasticSearch入门及核心概念介绍
    生产环境下Flask项目目录构建
    利用linq的Take Skip方法解决 集合拆分的问题
    Oracle trunc() 函数处理数字、日期的整理
    左连接条件与where条件的区别
  • 原文地址:https://www.cnblogs.com/liulitianxia/p/6082446.html
Copyright © 2011-2022 走看看