• 多态


    1.运行测试如下代码

    1.   左边的程序运行结果是什么?

    2.   你如何解释会得到这样的输出?

    3.   计算机是不会出错的,之所以得到这样的运行结果也是有原因的,那么从这些运行结果中,你能总结出Java的哪些语法特性?

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

    2.下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么?

    m=d;

    d=m;

    d=(Dog)m;

    d=c;

    c=(Cat)m;

    d=m,d=c引发错误,因为ddog的对象,mMammal的对象,所以这相当于直接将父类对象给子类要用强制类型转换,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);
    	}
    }
    	
    

      

     

  • 相关阅读:
    MSSQL如何将查询结果拼接成字符串
    SQL删除指定条件的重复数据,只保留一条
    清除日志
    jsp使用
    Eclipse使用
    SSM框架开发遇到的问题
    SpringMvc学习
    大中华~~汉字
    Word技巧设置
    AWS-资源访问慢分析
  • 原文地址:https://www.cnblogs.com/1998lu/p/6079043.html
Copyright © 2020-2023  润新知