Java学习 (十四)面向对象编程抽象类

Posted 泊而至远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

以上是关于Java学习 (十四)面向对象编程抽象类的主要内容,如果未能解决你的问题,请参考以下文章

PHP 面向对象程序设计(oop)学习笔记 - 抽象类对象接口instanceof 和契约式编程

面向对象的学习

廖雪峰Java2面向对象编程-4抽象类和接口-1抽象类

廖雪峰Java2面向对象编程-4抽象类和接口-2接口

scala学习笔记-面向对象编程之Trait(13)

Java面向对象:抽象类的学习