java基础第11天接口,抽象案例

需求:长安汽车员工管理系统。
* 该项目有一个Employee员工基类,其下有3个工厂员工子类,分别为:EmployeeFactory1、
* EmployeeFactory2、EmployeeFactory3
* 1. 所有工人都有 上班打卡方法clockIn()(所有员工打卡方式相同)
* 2. 所有工人都有 下班打卡方法clockOut()(所有员工打卡方式相同)
* 3. 但是每个工厂的子类中工作的方法work()都不同(强制重写)
*
* 并且
* 4. 工厂1员工可以微信支付和支付宝支付(需要声明两个接口,每个接口分别有一个支付方法)
* 5. 工厂2员工只能支付宝支付
* 请编程设计该程序实现

/**
 * 抽象基类:员工类
 * 
 */
public abstract class AbstractEmployee {
	/**
	 * 上班打卡方法
	 */
	public void clockIn() {
		System.out.println("上班打卡");
	}
	
	/**
	 * 下班打卡方法
	 */
	public void clockOut() {
		System.out.println("下班打卡");
	}
	
	/**
	 * 工作抽象方法
	 */
	public abstract void work();
}

/**
 *	工厂1员工子类EmployeeFactory1
 */
public class EmployeeFactory1 extends AbstractEmployee implements IWeChatPay,IAliPay{

	@Override
	public void work() {
		System.out.println("工厂1喷漆");
	}

	@Override
	public void aliPay() {
		System.out.println("阿里支付了");
	}

	@Override
	public void weChatPay() {
		System.out.println("微信支付了.....");
	}
	
}
/**
 *	工厂2员工子类EmployeeFactory2
 */
public class EmployeeFactory2 extends AbstractEmployee implements IAliPay {

	@Override
	public void work() {
		System.out.println("工厂2焊接");
	}

	@Override
	public void aliPay() {
		System.out.println("工厂2 支付宝支付...........");
	}

}
/**
 *	工厂3员工子类EmployeeFactory3
 */
public class EmployeeFactory3 extends AbstractEmployee {

	@Override
	public void work() {
		System.out.println("工厂3组装");
	}

}

/**
 *	抽象类和接口的案例测试类
 */
public class WokerTest {

	public static void main(String[] args) {
		/*
		 * 需求:长安汽车员工管理系统。
		 *  	该项目有一个Employee员工基类,其下有3个工厂员工子类,分别为:EmployeeFactory1、
		 * 	EmployeeFactory2、EmployeeFactory3
		 * 	   1. 所有工人都有 上班打卡方法clockIn()(所有员工打卡方式相同)
		 * 	   2. 所有工人都有 下班打卡方法clockOut()(所有员工打卡方式相同)
		 * 	   3. 但是每个工厂的子类中工作的方法work()都不同(强制重写)
		 *  
		 * 并且	
		 *     4. 工厂1员工可以微信支付和支付宝支付(需要声明两个接口,每个接口分别有一个支付方法)
		 * 	   5. 工厂2员工只能支付宝支付
		 * 请编程设计该程序实现
		 */
		AbstractEmployee emp = new EmployeeFactory3();//多态,用抽象父类接收
		
		//调用上班打卡方法
		emp.clockIn();
		//调用下班打卡方法
		emp.clockOut();
		
		//调用工作方法
		emp.work();
		
		//调用特有方法,需要类型判断,强制转换
		if (emp instanceof EmployeeFactory1) {
			//强制转换为EmployeeFactory1
			EmployeeFactory1 emp1 = (EmployeeFactory1)emp;
			//调用特有方法
			emp1.aliPay();
			emp1.weChatPay();
		} else if (emp instanceof EmployeeFactory2) {
			//强制转换为EmployeeFactory2
			EmployeeFactory2 emp1 = (EmployeeFactory2)emp;
			//调用特有方法
			emp1.aliPay();
		} 
		
	}

}

发布了30 篇原创文章 · 获赞 1 · 访问量 869

猜你喜欢

转载自blog.csdn.net/weixin_45061669/article/details/104849148
今日推荐