zoukankan      html  css  js  c++  java
  • 多态

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

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

  • 相关阅读:
    数据库事务查看
    在SQL中删除重复记录(多种方法)
    OO设计原则
    NHibernate开源框架Cuyahoga学习之权限映射
    链队列的实现
    二叉树的实现
    NHibernate.cfg.xml文件配置
    HQL查询实例
    对象枚举遍历实现二
    NHibernate开源框架Cuyahoga学习之数据访问泛型约束的实现
  • 原文地址:https://www.cnblogs.com/zll20153246/p/6079236.html
Copyright © 2011-2022 走看看