课堂作业8多态

结果截图:

结果分析:前俩组定义自己的变量,使用自己方法,第三组用子类的方法变量,最后一个父类变量,子类方法,最后一个,是强制转化。

Java语法:

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

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

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

模拟ATM机:

源代码:

package main;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.Scanner;

class Account{

String code = null; // 信用卡号

String name = null; // 客户姓名

    String password = null; // 客户密码

    double money = 0.0; // 卡里金额

    String data=null;

    Account(String code, String name, String password, double money,String data) {

                 this.code = code;

                 this.name = name;

                 this.password = password;

                 this.money = money;

                 this.data=data;

           

     }

     public  String getCode() {

         return code;

     }

     public String getName() {

        return name;

     }

     public String getdata(){

      return data;

     }

     public void setName(String name) {

         this.name = name;

     }

     public String getPassword() {

         return password;

     }

     public void setPassword(String password) {

         this.password = password;

     }

     public double getMoney() {

      return money;

     }

     public void setdata(String data)

     {

       this.data=data;}

    public void setMoney(double money) {

 this.money = money;

     }

}

public class Test {

public  static void main(String[] args){

Account arr=new Account("20153182000","白悦","150702",100,"1995.11.27");

    int a;

        String b;

        int c;

    System.out.println("请选择语言:(1.中文 2.英文)");

Scanner in =new Scanner(System.in);

a=in.nextInt();

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

b=in.next();

        if (arr.getPassword().equals(b)){

        

            MyWelcome();

c=in.nextInt();

if(c==1)

{

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

double d=in.nextInt();

arr.setMoney(arr.getMoney()+d);

System.out.println("您的余额为:"+arr.getMoney());

}

else if(c==2)

{

System.out.println("取款金额有:100,500,1000,1500,2000,5000,其他");

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

double e=in.nextDouble();

arr.setMoney(arr.getMoney()-e);

System.out.println("您的余额为:"+arr.getMoney());

}

else if(c==3)

{

System.out.println("请输入行号:");

String f=in.next();

if(f.equals(arr.getCode()))

{

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

    double g=in.nextDouble();

arr.setMoney(arr.getMoney()+g);

System.out.println("您的余额为:"+arr.getMoney());

    }

}

else if(c==4)

{

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

String h=in.next();

if(arr.getPassword().equals(h))

{

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

String j=in.next();

arr.setPassword(j);

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

}

}

else if(c==5)

{

System.out.println("您的余额为:"+arr.getMoney());

}

else System.out.println("无此功能");

}

}

//欢迎界面

     public static void MyWelcome() {

         String str = "---------------------------------";

         System.out.print(str + " " + "欢迎使用模拟ATM程序. " + str + " ");

         System.out.print(" 1.>存款." + " " + " 2.>取款." + " " + " 3.>转账汇款." + " " + " 4.>修改密码."

                + " " + " 5.>查询余额." + " ");

     }

     

}

结果截图:

原文地址:https://www.cnblogs.com/baiyue/p/6079176.html