zoukankan      html  css  js  c++  java
  • 如果对象的类型为T1,就做某件事;如果对象的类型为T2,就做另外一件事,请赏自己一个巴掌

    前人的至理名言,看看之前我写的代码,应该被赏了n个巴掌了吧。
    看看下面的例子:

    1.被赏巴掌的例子

    package com.tn.salary;
    
    public interface Employ {
       int getSalary();
    }
    
    package com.tn.salary;
    
    public class Manager implements Employ {
    
    	public int getSalary() {
    		return 5000;
    	}
    
    	public int getBonus() {
    		return 300;
    	}
    }
    
    package com.tn.salary;
    
    public class Programmmer implements Employ {
    
    	public int getSalary() {
    		return 3000;
    	}
    
    }
    
    package com.tn.salary;
    
    public class Payroll {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		Payroll payroll = new Payroll();
    		payroll.caculatePayRoll(new Programmmer());
    		payroll.caculatePayRoll(new Manager());
    	}
    
    	private int caculatePayRoll(Employ em) {
    		int money = em.getSalary();
    		if (em instanceof Manager) {
    			money += ((Manager) em).getBonus();
    		}
    		System.out.println("the total money is"+money);
    		return money;
    	}
    
    }
    

      

    2.脸部保持完整的例子

    package com.tn.salary.refector;
    
    public interface Employ {
       int getSalary();
       int getBonus();
    }
    
    package com.tn.salary.refector;
    
    public class Manager implements Employ {
    
    	private static final int MANAGER_MONTHLY_BONUS = 300;
    	private static final int MANAGER_MONTHLY_SALARY = 5000;
    
    	public int getSalary() {
    		return MANAGER_MONTHLY_SALARY;
    	}
    
    	public int getBonus() {
    		return MANAGER_MONTHLY_BONUS;
    	}
    }
    
    package com.tn.salary.refector;
    
    public class Programmmer implements Employ {
    
    	private static final int PROGRAMMER_MONTHLY_BONUS = 0;
    	private static final int PROGRAMMMER_MONTHLY_SALARY = 3000;
    
    	public int getSalary() {
    		return PROGRAMMMER_MONTHLY_SALARY;
    	}
    
    	public int getBonus() {
    		return PROGRAMMER_MONTHLY_BONUS;
    	}
    
    }
    
    package com.tn.salary.refector;
    
    public class Payroll {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		Payroll payroll = new Payroll();
    		payroll.caculatePayRoll(new Programmmer());
    		payroll.caculatePayRoll(new Manager());
    	}
    
    	private int caculatePayRoll(Employ em) {
    		int money = em.getSalary()+em.getBonus();
    		System.out.println("the money is"+money);
    		return money;
    	}
    
    }
    
  • 相关阅读:
    第1章:路线图
    第0章:战胜恐惧和懊悔
    c++ 变量 定义 声明
    两个无符号数相减 可以得到负数
    c++ cast operator(类型转换操作符)
    C++中static 的使用方式,以及与c中的static的区别
    重载overload 重写override 重定义redefining
    用到位运算的题目
    C++ 虚函数表解析
    虚函数 动态绑定 实现方式是:虚函数表
  • 原文地址:https://www.cnblogs.com/budoudou/p/2134888.html
Copyright © 2011-2022 走看看