抽象的定义
抽象是把多个事物的共性的内容抽取出来,本质就是把我们关注的内容抽取出来。(比如:宝马、奔驰都属于汽车,汽车是我们抽象出的概念)
抽象类
java中可以定义没有方法体的方法,该方法由其子类具体的实现,该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类
抽象方法特点
- 只有方法的头没有方法体
- 抽象方法用abstract来修饰
- 抽象方法代表一种不确定的操作或行为
- 抽象方法不能被调用
抽象类的特点
- 定义中含有抽象方法的类叫抽象类
- 抽象类用abstract来修饰
- 抽象类代表一种抽象的对象类型
- 抽象类不能实例化
- 抽象类中可以由具体方法,可以没有抽象方法
public abstract class A{
public void methodA() {
}
public abstract void methodB();
}
示例--根据给出的内容进行分析设计
- 需求:公司中所有的员工都有工号,姓名,薪水,工作
- 教学总监除了员工所具有的特点以外,还有管理津贴
- 对给出的需求进行数据建模
public class EmployeeDemo {
public static void main(String[] args) {
JavaTeacher teacher = new JavaTeacher(1, "zhangsan", 2000);
teacher.work();
Leader leader = new Leader(2, "lisi", 3000, 2000);
leader.work();
}
}
abstract class Employee{
private int number;
private String name;
private double salary;
public Employee(int number, String name, double salary) {
super();
this.number = number;
this.name = name;
this.salary = salary;
}
public abstract void work();
}
/**
* 一旦一个类继承了抽象类,那么这个类需实现抽象类中的抽象方法或者继续抽象下去
* @author QuLvT
*
*/
class JavaTeacher extends Employee{
public JavaTeacher(int number, String name, double salary) {
super(number, name, salary);//由父类的构造方法实现
}
@Override
public void work() {
System.out.println("java课");
}
}
class Leader extends Employee{
private double allowance;
public Leader(int number, String name, double salary, double allowance) {
super(number, name, salary);
this.allowance = allowance;
}
@Override
public void work() {
System.out.println("培训新员工");
System.out.println("设计课程体系");
}
}