Java中抽象类的作用及说明
作者:代码大师麦克劳瑞
Java抽象类
可以理解为一种约定工具,在代码中抽象类在某种情况适合用来写出大体框架,具体实现流程由抽象类事先定义完毕,具体实现过程可以定义抽象方法,而抽象方法交由子类去具体实现。
举个例子
定义一个数据库查询的实现规范:
1、注册驱动
2、获取链接
3、执行查询语句
其中execute()方法在抽象类中已经定义完毕,需要其余三个方法来辅助实现,但是具体的注册驱动、获取链接、执行sql等方法就要放在不同的数据库实现类中去完成
代码如下:
import java.sql.Connection; /** * 数据库链接抽象类 */ public abstract class AbstractDataBaseClass { /** * 注册驱动 */ public abstract void registerDriver(); /** * 获取链接 * @return */ public abstract Connection getConnection(); /** * 执行sql */ public abstract void executeSql(); public void execute(){ this.registerDriver(); this.getConnection(); this.executeSql(); } }
import java.sql.Connection; /** * oracle具体实现类 */ public class OracleDataBaseClass extends AbstractDataBaseClass { @Override public void registerDriver() { System.out.println("注册oracle数据驱动"); } @Override public Connection getConnection() { System.out.println("获取oracle数据库链接"); return null; } @Override public void executeSql() { System.out.println("在oracle数据库中执行sql"); } }
import java.sql.Connection; /** * mysql具体实现类 */ public class MysqlDataBaseClass extends AbstractDataBaseClass { @Override public void registerDriver() { System.out.println("注册mysql数据驱动"); } @Override public Connection getConnection() { System.out.println("获取mysql数据库链接"); return null; } @Override public void executeSql() { System.out.println("在mysql数据库中执行sql"); } }
public class DataBaseTest { public static void main(String[] args) { AbstractDataBaseClass mysql = new MysqlDataBaseClass(); mysql.execute(); System.out.println("----------------------------------------"); AbstractDataBaseClass oracle = new OracleDataBaseClass(); oracle.execute(); } }
执行结果:
注册mysql数据驱动
获取mysql数据库链接
在mysql数据库中执行sql
----------------------------------------
注册oracle数据驱动
获取oracle数据库链接
在oracle数据库中执行sql
抽象类的意义
抽象的意义:对代码的维护和重用。
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
具体分析如下
1.因为抽象类不能实例化对象,所以必须要有子类来实现它之后才能使用。这样就可以把一些具有相同属性和方法的组件进行抽象,这样更有利于代码和程序的维护。
比如本科和研究生可以抽象成学生,他们有相同的属性和方法。这样当你对其中某个类进行修改时会受到父类的限制,这样就会提醒开发人员有些东西不能进行随意修改,这样可以对比较重要的东西进行统一的限制,也算是一种保护,对维护会有很大的帮助。
2.当又有一个具有相似的组件产生时,只需要实现该抽象类就可以获得该抽象类的那些属性和方法。
比如学校又新产生了专科生这类学生,那么专科生直接继承学生,然后对自己特有的属性和方法进行补充即可。这样对于代码的重用也是很好的体现。
所以,Java中抽象类对于代码的维护和重用有很好的帮助,也是Java面向对象的一个重要体现。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。