小案例分析Java中接口和抽象方法的使用

小案例分析Java中接口和抽象方法的使用

先来看看题目需求吧

模拟给所有员工发工资,
代码实现,效果如下所示:
小明的薪资为:9000.0
卡余额是:0.0
小亮的薪资为: 5000.0
卡余额是:0.0

我们先给个思路:

  1. 定义员工Employee类。包含属性:姓名,薪资,银行卡(保存工资)。
    2. 定义经理Manager类继承Employee类,包含属性:奖金。
    3. 定义职员Clerk类继承Employee类。
    4. 定义Money接口,提供抽象方法salary。
    5. 定义公司Company类,实现Money接口。
    6. 定义测试类,创建公司对象,经理对象,职员对象,调用公司salary方法,给经理和职员发工资。

给大家普及一下接口的知识:

interface修饰(重点掌握)
接口:没有具体的定义,也没有具体的行为,用来制定规则

重点:使用接口需要注意一下几点内容哟!!!

1.接口中所有的方法默认都是public abstract修饰的,也就是抽象方法。
2.接口中不能有实现的方法(具体的方法),除了jdk1.8可以定义default修饰的方法体。
3.实现接口使用的是implements关键字。
4.实现接口就必须实现接口中所有的抽象方法。
5.接口不能直接创建对象,必须通过实现类去创建对象。
6.一个类可以实现多个接口,中间用","隔开。
7.接口不能实现接口。
8.接口可以继承接口,而且可以继承多个接口,中间用“,”隔开。
9.接口中的属性默认都是public static final修饰的,是一个常量。

我们按照步骤要求,先创建类和接口吧

  1. 定义员工Employee类
public class Employee {
	//定义属性
	private String name;
	private double pay;
	private double BankCard;
	//利用get set方法获取和修改属性
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPay() {
		return pay;
	}
	public void setPay(double pay) {
		this.pay = pay;
	}
	public double getBankCard() {
		return BankCard;
	}
	public void setBankCard(double bankCard) {
		BankCard = bankCard;
	}
	
	
}

  1. 定义经理Manager类继承Employee类
public class Manager extends Employee {
	//定义奖金属性
	private int Bonus;
	//使用set get方法获取和修改属性

	public int getBonus() {
		return Bonus;
	}

	public void setBonus(int bonus) {
		Bonus = bonus;
	}
	

}

  1. 定义职员Clerk类继承Employee类
public class Clerk extends Employee{
	

}

  1. 定义Money接口,提供抽象方法salary。
public interface Money {
	//抽象的方法
	public void salary();

}

  1. 定义公司Company类,实现Money接口。
public class Company implements Money {

	@Override
	public void salary() {
		// 创建经理的对象
		Employee employee = new Employee();
		// 调用父类属性进行赋值
		employee.setName("小明");
		employee.setPay(9800.0);
		employee.setBankCard(0.0);
		
		// 输出
		System.out.print(employee.getName() + "的薪资为:" + employee.getPay() + "\t");
		System.out.println("卡余额是:" + employee.getBankCard());

		// 创建职员对象
		Clerk clerk = new Clerk();
		clerk.setName("小亮");
		clerk.setPay(5600.0);
		clerk.setBankCard(0.0);
		// 银行卡余额等于工资加原来卡的余额
		clerk.setBankCard(clerk.getBankCard());
		// 输出
		System.out.print(clerk.getName() + "的薪资为:" + clerk.getPay() + "\t");
		System.out.println("卡余额是:" + clerk.getBankCard());

		
		//定义月份
		int month=1;
		//设置循环体
		while(month<13) {
			
		
		// 第一个月
		System.out.println("===================="+month+"月================");
		// 调用父类属性进行赋值
		employee.setPay(9800.0);
		// 银行卡余额等于工资加原来卡的余额
		employee.setBankCard(employee.getBankCard() + employee.getPay());
		// 输出
		System.out.print(employee.getName() + "的薪资为:" + employee.getPay() + "\t");
		System.out.println("卡余额是:" + employee.getBankCard());

		clerk.setPay(5600.0);
		// 银行卡余额等于工资加原来卡的余额
		clerk.setBankCard(clerk.getBankCard() + clerk.getPay());
		// 输出
		System.out.print(clerk.getName() + "的薪资为:" + clerk.getPay()+ "\t");
		System.out.println("卡余额是:" + clerk.getBankCard());
		month++;
		}
	}

}

  1. 定义测试类,创建公司对象,经理对象,职员对象,调用公司salary方法,给经理和职员发工资。
public class Test {
	public static void main(String[] args) {
		//创建公司对象
		Company company = new Company();
		//创建经理对象
		Manager manager = new Manager();
		//创建职员对象
		Clerk clerk = new Clerk();
		//调用公司salary方法
		company.salary();
		
		
	}

}

我们来看看运行效果图吧

在这里插入图片描述
今日分享就到这儿了,欢迎各位业界大佬提出宝贵的意见!!

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值