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

 


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