1.运行测试如下代码
1. 左边的程序运行结果是什么?
2. 你如何解释会得到这样的输出?
3. 计算机是不会出错的,之所以得到这样的运行结果也是有原因的,那么从这些运行结果中,你能总结出Java的哪些语法特性?
当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。
2.下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么?
m=d;
d=m;
d=(Dog)m;
d=c;
c=(Cat)m;
d=m,d=c引发错误,因为d是dog的对象,m是Mammal的对象,所以这相当于直接将父类对象给子类要用强制类型转换,c,d是同一级,同为子类,不能相互赋值。
3.多态写Atm
import java.util.Scanner; abstract class Account { public abstract void display(); public abstract void qukuan(); public abstract void cunkuan(); public abstract void zhuanzhang(); public abstract void setAcount(String string, String string2, String string3, String string4, double i); } public class Atm extends Account { public static void main(String[]args) { Atm a=new Atm(); a.setAcount("abcd123456712","王五",123456,"2016.11.15",10); Scanner in=new Scanner(System.in); boolean flag=true ; System.out.println("请输入用户名和密码:"); String na=in.nextLine(); String p=in.nextLine(); while(flag) { System.out.println("请选择语言界面(中文1,英文0):"); int n=in.nextInt(); if(n==1) { System.out.println("1.取款"); System.out.println("2.存款"); System.out.println("3.显示余额"); System.out.println("4.修改密码"); System.out.println("5.转账"); System.out.println("6.退出"); int choose=in.nextInt(); if(choose==1) { a.qukuan(); } else if(choose==2) { a.cunkuan(); } else if(choose==3) { a.display(); } else if(choose==4) { System.out.println("请输入姓名:"); System.out.println("请输入更改后的密码:"); Scanner in1=new Scanner(System.in); String m=in1.nextLine(); } else if(choose==5) { a.zhuanzhang(); } else { break; } } } } public int data; public String password; public double count; public String biaoshi; public String name; public String getbiaoshi() { return biaoshi; } public String getname() { return name; } public int getdata() { return data; } public String getpassword() { return password; } public double getcount() { return count; } public void setAcount(String hh,String na,int da,String pa,double e) { biaoshi=hh; name=na; data=da; password=pa; count=e; } public void Account(String hh,String na,int da,String pa,double e) { biaoshi=hh; name=na; data=da; password=pa; count=e; } public Atm() {}; public Atm(String hh, String na, int da, String pa, double e) { biaoshi=hh; name=na; data=da; password=pa; count=e; } public void qukuan() { Scanner in=new Scanner(System.in); 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(count-Q<0) { System.out.println("余额不足!"); } else { System.out.println("取款成功!"); count=count-Q; } } public void cunkuan() { System.out.println("请输入存款金额:"); Scanner in1=new Scanner(System.in); int m=in1.nextInt(); count=count+m; System.out.println("存入金额"+m); } public void zhuanzhang() { System.out.println("请输入行号:"); Scanner in6=new Scanner(System.in); String hang=in6.nextLine(); if(hang.equals(biaoshi)) { System.out.println("请输入转账金额:"); Scanner in5=new Scanner(System.in); double money=in5.nextDouble(); count=count-money; } } @Override public void setAcount(String string, String string2, String string3, String string4, double i) { // TODO Auto-generated method stub } @Override public void display() { System.out.println("余额为:"+count); } }