• JAVA多态


    1.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 riqi;

    double yue;

    String mima;

    public atm(){ //无参构造函数

    }

    public atm(String kahao,String name,String riqi,String mima,double yue){ //有参构造函数

    this.kahao=kahao;

    this.name=name;

    this.riqi=riqi;

    this.mima=mima;

    this.yue=yue;

    }

    public void setAcount(String kahao,String name,String riqi,String mima,double yue){ //赋值

    this.kahao=kahao;

    this.name=name;

    this.riqi=riqi;

    this.mima=mima;

    this.yue=yue;

    }

     public String getkahao(){ return kahao;}//获得值

     public String getName(){return name;}

     public String getRiqi(){return riqi;}

     public String getMima(){return mima;}

     public double getYue(){return yue;}

    public void show()

    {

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

    }

    public void cunkuan(){

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

    Scanner s=new Scanner(System.in);

    yue+=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();

    yue=yue-zhuan;

    q.yue=q.yue+zhuan;

    show();

    }

    public void qukuan(){

    boolean f=true;

    while(f){

    System.out.println("1100");

    System.out.println("2500");

    System.out.println("31000");

    System.out.println("41500");

    System.out.println("52000");

    System.out.println("65000");

    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:

    if(yue<100)

    System.out.print("余额不足");

    yue=yue-100;

    show();

    break;

    case 2:

    if(yue<500)

    System.out.print("余额不足");

    else

    yue=yue-500;

    show();

    break;

    case 3:

    if(yue<1000)

    System.out.print("余额不足");

    else

    yue=yue-1000;

    show();

    break;

    case 4:

    if(yue<1500)

    System.out.print("余额不足");

    yue=yue-1500;

    show();

    break;

    case 5:

    if(yue<2000)

    System.out.print("余额不足");

    else

    yue=yue-2000;

    show();

    break;

    case 6:

    if(yue<5000)

    System.out.print("余额不足");

    else

    yue=yue-5000;

    show();

    break;

    case 7:

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

    double qu=s.nextDouble();

    if(yue<qu)

    System.out.print("余额不足");

    else

    yue=yue-qu;

    show();

    break;

    case 8:

    f=false;

    break;

    case 9:

    f=false;

    break;

    }

    }

    }

    }

    public class zhuanhua {

    public static void main(String[] args) {

    fangfa a=new atm();

    a.setAcount("165432156432165", "zhangzemin", "2016.11.18", "123456", 100000);

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

    }

    }

    }

    }

    二:

    public class ParentChildTest {

        public static void main(String[] args) {

            Parent parent=new Parent();

            parent.printValue();

            Child child=new Child();

            child.printValue();

            

            parent=child;

            parent.printValue();

            

            parent.myValue++;

            parent.printValue();

            

            ((Child)parent).myValue++;

            parent.printValue();

            

        }

    }

    class Parent{

        public int myValue=100;

        public void printValue() {

            System.out.println("Parent.printValue(),myValue="+myValue);

        }

    }

    class Child extends Parent{

        public int myValue=200;

        public void printValue() {

            System.out.println("Child.printValue(),myValue="+myValue);

        }

    }

    2、实验截图:

    3、结果分析:

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

    对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。

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

    【作业】思索:这种编程方式有什么不合理的地方吗?

    从这个示例中可以看到,通过在编程中应用多态,可以使我们的代码具有更强的适用性。当需求变化时,多态特性可以帮助我们将需要改动的地方减少到最低限度。
    多态编程有两种主要形式:
    1)继承多态:示例程序使用的方法
    2)接口多态:使用接口代替抽象基类

  • 相关阅读:
    CodeForces 453A Little Pony and Expected Maximum
    bzoj1415[NOI2005]聪聪和可可-期望的线性性
    记lrd的高二上学期第五次调研考试
    bzoj4443[SCOI2015]小凸玩矩阵
    bzoj1415[NOI2005]聪聪和可可
    bzoj2702[SDOI2012]走迷宫
    connectionstrings-MYSQL
    connectionstrings-oracle
    connectionstrings-sql server 2012
    sqlserver存储过程中SELECT 与 SET 对变量赋值的区别[转]
  • 原文地址:https://www.cnblogs.com/zeminzhang/p/6079278.html
Copyright © 2020-2023  润新知