多态

一:怎样判断对象是否可以转换

public class TestInstanceof
{
    public static void main(String[] args) 
    {
        //声明hello时使用Object类,则hello的编译类型是Object,Object是所有类的父类
        //但hello变量的实际类型是String
        Object hello = "Hello";
        //String是Object类的子类,所以返回true。
        System.out.println("字符串是否是Object类的实例:" + (hello instanceof Object));
        //返回true。
        System.out.println("字符串是否是String类的实例:" + (hello instanceof String));
        //返回false。
        System.out.println("字符串是否是Math类的实例:" + (hello instanceof Math));
        //String实现了Comparable接口,所以返回true。
        System.out.println("字符串是否是Comparable接口的实例:" + (hello instanceof Comparable));
        String a = "Hello";
        //String类既不是Math类,也不是Math类的父类,所以下面代码编译无法通过
        //System.out.println("字符串是否是Math类的实例:" + (a instanceof Math));
    }
}

二:多态父类调用子类的方法

public class ParentChildTest {
    public static void main(String[] args) {
        Parent parent=new Parent();
        parent.printValue();
        Child child=new Child();
        child.printValue();
        
        parent=child;
        parent.printValue();
        
        parent.myValue++;
        parent.printValue();
        
        ((Child)parent).myValue++;
        parent.printValue();
        
    }
}

class Parent{
    public int myValue=100;
    public void printValue() {
        System.out.println("Parent.printValue(),myValue="+myValue);
    }
}
class Child extends Parent{
    public int myValue=200;
    public void printValue() {
        System.out.println("Child.printValue(),myValue="+myValue);
    }
}

当父类调用子类的对象时,父类并不能调用子类的函数,而是调用自己的函数,由于自己的函数名与子类的函数名同名,所以掉用了子类的函数体中的内容

三:ATM的工作原理

import java.util.*;
class Atm
{
    String name;
    String date;
    int yue;
    String mima;
    public int denglu()
    {
        int a=0;
        System.out.print("请输入密码:");
        String s;
        Scanner in=new Scanner(System.in);
        s=in.nextLine();
        if(mima.equals(s))
        {
            a=1;
            return a;
        }
        else
        {
            System.out.println("密码错误,卡已经锁死!!!");
            return a;
        }
    }
    public void cunkuan()
    {
        System.out.println("请输入存款金额:");
        Scanner in=new Scanner(System.in);
        int a;
        a=in.nextInt();
        yue=yue+a;
    }
    public void zhuanzhang()
    {
        String huming;
        System.out.println("请输入卡号:");
        Scanner in=new Scanner(System.in);
        huming=in.nextLine();
        System.out.println("请输入转账金额:");
        int a;
        a=in.nextInt();
        yue=yue-a;
        System.out.println("转账成功!!!");
    }
    public void qukuan()
    {
        int i;
        System.out.println("请选择金额:1  100   2 500    3 1000   4 1500    5 2000    6 选择其他金额            7  退卡");
        Scanner in=new Scanner(System.in);
        i=in.nextInt();
        if(i==1)
        {
            if(yue<100)
            {
                System.out.println("账户余额不足!!!");
            }
            else
            {
            yue=yue-100;
            }
        }
        else if(i==2)
        {
            if(yue<500)
            {
                System.out.println("账户余额不足!!!");
            }
            else
            {
            yue=yue-500;
            }
        }
        else if(i==3)
        {
            if(yue<1000)
            {
                System.out.println("账户余额不足!!!");
            }
            else
            {
            yue=yue-1000;
            }
        }
        else if(i==4)
        {
            if(yue<1500)
            {
                System.out.println("账户余额不足!!!");
            }
            else
            {
            yue=yue-1500;
            }
        }
        else if(i==5)
        {
            if(yue<2000)
            {
                System.out.println("账户余额不足!!!");
            }
            else
            {
            yue=yue-2000;
            }
        }
        else if(i==6)
        {
        System.out.print("请输入需要的金额:");
        int s;
        s=in.nextInt();
        if(yue<s)
        {
            System.out.println("账户余额不足!!!");
        }
        else
        {
        yue=yue-s;
        }
        }
    }
    public Atm(String a,String b,int c)
    {
        name=a;
        date=b;
        yue=c;
        mima="liming";
    }
    public void xiugai()
    {
        String a;
        System.out.print("请输入新密码:");
        Scanner in=new Scanner(System.in);
        a=in.nextLine();
        mima=a;
    }
    public void chaxun()
    {
        System.out.println("当前账户余额为"+yue);
    }
}
public class Atmd {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Atm a=new Atm("liming","20161126",100000);
        int w,q,e;
        e=a.denglu();
        if(e==1)
        {
        for(q=0;;q++)
        {
            System.out.println("请选择操作项目:");
            System.out.println("1 取款");
            System.out.println("2 转账:");
            System.out.println("3 存款:");
            System.out.println("4 查询余额:");
            System.out.println("5 修改密码:");
            System.out.println("6 退卡");
            Scanner in=new Scanner(System.in);
            q=in.nextInt();
            if(q==1)
            {
               a.qukuan();
            }
            else if(q==2)
            {
               a.zhuanzhang();
            }
            else if(q==3)
            {
               a.cunkuan();
            }
            else if(q==4)
            {
               a.chaxun();
            }
            else if(q==5)
            {
               a.xiugai();
            }
            else
            {
               break;
            }
            
        }
        }

    }

}

原文地址:https://www.cnblogs.com/zll20153246/p/6079236.html