• 8.多态


    知识点:

    1.基类对象赋给子类对象必须执行类型转换:子类对象变量=(子类名)基类对象名

     

    2.Vector< >s 可以随时向数组s中加入或移除对象

    *********************************************************************

    一.运行代码,运行结果是什么?如何解释会得到这样的输出?从运行结果中能总结出java的哪些语法特性?

     答: parent.printvalue(),myvalue=100child.printvalue(),myvalue=200child.printvalue(),myvalue=200child.printvalue(),myvalue=200child.printvalue(),myvalue=201

    1当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,对象是子类型的就调用子类型的方法,对象是父类型的就调用父类型的方法。

    2)当子类与父类拥有相同的字段,则子类会代替父类的字段,子类方法中访问的是子类中的字段,子类方法访问父类中被隐藏的同名字段可以使用super关键字。

    二.用多态模拟ATM机

      源代码:package demo;

    import java.util.Scanner;

    public class Show {

    public static void main(String[] args) {

           ATM atm=new ATM();

           Show s=new Show();

           s.showFace();

           atm.select();

         }

         //显示菜单方法

    public static void showFace()

    {

     System.out.println("********************");

    System.out.println("    1.存款:");

    System.out.println("    2.取款:");

    System.out.println("    3.转账汇款:");

    System.out.println("    4.修改密码:");

    System.out.println("    5.查询余额:");

    System.out.println("********************");

    System.out.println("请选择:");

    }

    }

    class PersonalAccount

    {

    String account;

    String name;

    String date;  //日期

    String mima; //密码

    double yue;  //余额

    PersonalAccount(String account,String name,String date,String mima,double yue){

    this.account=account;

    this.name=name;

    this.date=date;

    this.mima=mima;

    this.yue=yue;

    }

    String Getaccount()

    {

      return account;

      }

    String Getname()

     {

       return name;

     }

     String Getdata()

    {

      return date;

    }

    String Getmima()

    {

     return mima;

    }

     double Getyue()

     {

       return yue;

      }

    void Setaccount(String ac)

    {

      account=ac;

    }

    void Setname(String n)

    {

       name=n;

    }

    void Setdate(String d)

    {

       date=d;

    }

    void Setmima(String m)

    {

      mima=m;

    }

    void Setyue(double y)

    {

      yue=y;

    }

    }

    abstract class aATM{

     public abstract void QuKuan();//取款

     public abstract void CunKuan();//存款

    public abstract void Zhuanzhang();//转账

    public abstract void mima();//改密码

    public abstract void yue();//余额

    }

    class ATM extends aATM{

    Scanner in = new Scanner(System.in);

    PersonalAccount A=new PersonalAccount("1234567890123","han","20161115","970318",1000);

    public void QuKuan()

    {

    System.out.println("可取款金额:");

    System.out.println("100");

    System.out.println("500");

    System.out.println("1000");

    System.out.println("1500");

    System.out.println("2000");

    System.out.println("5000");

    System.out.println("其他金额");

    System.out.println("请输入你要取款的金额:");

    double Q=in.nextDouble();

    if(A.yue-Q<0)

    {

      System.out.println("余额不足!");

    }

      else

    {

      System.out.println("取款成功!");

       A.yue=A.yue-Q;

    }

    }

    public void CunKuan()

    {

    System.out.println("请输入存款金额:");

    double Q1=in.nextDouble();

    A.yue=A.yue+Q1;

    }

    public void Zhuanzhang()

    {

    System.out.println("输入要转账的行号:");

    String H=in.next();

    System.out.println("你要转账的人的姓名是否为xxx?0:,1:");

    int X=in.nextInt();

    if(X==0)

    {

    System.out.println("请输入要转账的金额:");

    double Z=in.nextDouble();

    System.out.println("转账成功!");

     A.yue=A.yue-Z;

    System.out.println("您的余额为:"+A.yue);

    }

    if(X==1)

    {

      System.out.println("卡号错误!");

    }

    }

    public void mima()

    {

      System.out.println("请输入您要修改的卡号:");

      String S=in.next();

      if(A.Getaccount().equals(S))

    {

     System.out.println("请输入原密码:");

     String S1=in.next();

     if(A.Getmima().equals(S1))

        {

         System.out.println("请输入新密码:");

         String S2=in.next();

         A.Setmima(S2);

         System.out.println("修改成功!");

        }

     }

      }

     public void yue()

     {

       System.out.println("余额为:"+A.yue);

     }

     void select()

     {

      boolean p=true;

      while(p == true)

     {

     Scanner in = new Scanner(System.in);

     System.out.println("请输入要执行的操作:");

     int m = in.nextInt();

     if(m == 1)

      {

        QuKuan();

       continue;

      }

     if(m == 2)

      {

    CunKuan();

        continue;

      }

     if(m == 3)

     {

    Zhuanzhang();

     continue;

     }

     if(m == 4)

     {

      mima();      

      continue;

      }

    if(m == 5)

    {

    yue();

        continue;

        }

    else

     {

    System.out.println("已退出系统!");

    p = false;

    }

    in.close();

    }

      }

    }

  • 相关阅读:
    回归cnblog
    第一篇博文
    apache 配置网站目录,虚拟目录,新端口
    linux 虚拟机设置IP访问外网
    Volist标签 key值的使用
    php header调试,yii2打log
    Yii2 框架下bootstrap 弹窗预览视频等~
    几个简单的css设置问题:div居中,ul li不换行 ,内容超出自动变省略号等
    鼠标右键弹窗(实现重命名等)的设计
    HTML5 Canvas绘图系列之一:圆弧等基础图形的实现
  • 原文地址:https://www.cnblogs.com/cxr0711/p/6079306.html
Copyright © 2020-2023  润新知