zoukankan      html  css  js  c++  java
  • 多态

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

      

     

  • 相关阅读:
    服务器状态码
    QuerySet中添加Extra进行SQL查询
    django配置一个网站建设
    MySQL数据库查询中的特殊命令
    125. Valid Palindrome
    121. Best Time to Buy and Sell Stock
    117. Populating Next Right Pointers in Each Node II
    98. Validate Binary Search Tree
    91. Decode Ways
    90. Subsets II
  • 原文地址:https://www.cnblogs.com/1998lu/p/6079043.html
Copyright © 2011-2022 走看看