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;
    	}
    
    }
    
  • 相关阅读:
    python学习之列表
    python学习之数据类型
    开启python学习之路
    软件工程中的需求分析包括的主要内容
    论需求分析和数据库设计的重要性
    Android的ListView分页功能(上滑加载更多)
    设置ListView显示到最后一行
    一对一Socket简单聊天的实现
    Spring Cloud学习笔记-004
    Spring Cloud学习笔记-003
  • 原文地址:https://www.cnblogs.com/budoudou/p/2134888.html
Copyright © 2011-2022 走看看