public abstract class Person { protected String name; public String getName(){ return this.name; } //进银行取号 等待叫号 public abstract void callNum(); //到窗口办理业务 public abstract void setBusiness(); //离开银行 public abstract void leave();}
public class YongMan extends Person{ public YongMan(){} public YongMan(String name){ this.name = name; } public void callNum() { System.out.println("年轻人来到了银行,自己拿到了小票"); } public void setBusiness() { System.out.println("年轻人熟悉银行的业务,很快就办理完了业务"); } public void leave() { System.out.println("年轻人办理完业务,急冲冲的离开了"); }
public class OldMan extends Person{ public OldMan(){} public OldMan(String name){ this.name = name; } public void callNum(){ System.out.println("老年人年纪高了,不熟悉业务,需要帮助"); } public void setBusiness() { System.out.println("老人家慢悠悠的在窗口办理业务"); } public void leave() { System.out.println("办理完业务后,老人慢悠悠的离开了"); }
public class Bank { //等待客户来办理业务 public void handleBusiness(Person person){ //利用多态的特性 传递参数时只需要传递一个父类这一个对象 //就算再多一个类 只需要这个类也继承父类的方法 银行这边的参数也不需要修改 System.out.println("欢迎"+person.getName()+"来我们银行办理业务"); person.callNum(); person.setBusiness(); person.leave(); }}
public class RunMain { public static void main(String[] args){ Bank bank = new Bank(); Person p = new OldMan("老人家"); bank.handleBusiness(p); Person p1 = new YongMan("年轻人"); bank.handleBusiness(p1); }}