抽象的定义:抽象是把多个事物的共性的内容抽取出来,本质就是把我们关注的内容抽取出来。(比如:宝马,奔驰都属于汽车,汽车是抽象出来的概念);
抽象类:Java中可以定义没有方法体的方法,该方法由其子类来具体的实现。该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类;
抽象方法特点:
① 只有方法头没有方法体的方法称为抽象方法:
② 抽象方法用abstract来修饰;
③ 抽象方法代表一种不确定的操作或行为;
④ 抽象方法不能被调用;
抽象类的特点:
① 定义中含有抽象方法的类叫抽象类;
② 抽象类用abstract来修饰;
③ 抽象类代表一种抽象的对象类型;
④ 抽象类不能被实例化;
⑤ 抽象类中可以有具体方法,可以没有抽象方法;
//A是一个抽象类
public abstract class A{
public void methodA(){
}
public abstract void methodB();
}
示例——根据给出的内容进行分析设计
① 需求:公司中所有的员工都有工号,姓名,薪水,工作;
② 教学总监除了员工所具备的特点以外,还有管理津贴;
③ 对给出的需求进行数据建模;
1 public class EmployeeDemo{
2 public static void main(String []atgs){
3 JavaTeacher teacher=new JavaTeacher(1,"张三",2000);
4 teacher.work();
5 Leader leader=new Leader(2,"李四",3000,10000);
6 leader.work();
7
8 //Employee emp=new Employee(3,"王五",4000);//抽象类不能被实例化
9
10 //抽象类也是父类,引用变量可以引用子类的对象
11 Employee teacher2=new JavaTeacher(4,"赵六",2500);
12 teacher2.work();
13 }
14 }
15
16 //抽象类
17 abstract class Employee{
18
19 private int number;
20 private String name;
21 private double salary;
22
23 public Employee(int number,String name,double salary){
24 this.number=number;//工号
25 this.name=name;//姓名
26 this.salary=salary;//薪水
27 }
28
29 public void aa(){
30 //抽象类中可以带有实现的方法
31 }
32
33 //抽象方法的声明
34 public abstract void work();
35 }
36
37 //一旦一个类去继承了抽象类,那么这个类要么去实现抽象类中的抽象方法
38 //要么继续抽象下去
39 class JavaTeacher extends Employee{
40 public JavaTeacher(int number,String name,double salary){
41 super(number,name,salary);
42 }
43
44 //抽象方法的实现
45 public void work(){
46 System.out.println("上Java课");
47 }
48 }
49
50 class Leader extends Employee{
51 private double allowance;//津贴
52 public Leader(int number,String name,double salary,double allowance){
53 super(number,name,salary);
54 this.allowance=allowance;
55 }
56
57 //抽象方法的实现
58 public void work(){
59 System.out.println("培训新员工");
60 System.out.println("设计教学课程");
61 }
62 }