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


浙公网安备 33010602011771号