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面向对象的一个重要体现。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
