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
版权声明:本文为u010786653原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。