你的位置:首页 > Java教程

[Java教程]Java学习 (十四)、面向对象编程(六)抽象类


抽象的定义:抽象是把多个事物的共性的内容抽取出来,本质就是把我们关注的内容抽取出来。(比如:宝马,奔驰都属于汽车,汽车是抽象出来的概念);

抽象类: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 }