Abstract base class representing a generic database connection manager.
@author
@author
@version
abstract class Database {
Establishes a connection to the underlying database engine.
@return
public abstract String connect();
Executes an SQL query string against the database.
@param query
@return
public abstract String executeQuery(String query);
}
MySQL-specific database implementation.
@author
@author
@version
class MySQLDatabase extends Database {
@Override
public String connect() {
return "Connected to MySQL";
}
@Override
public String executeQuery(String query) {
return "Executing in MySQL: " + query;
}
}
PostgreSQL-specific database implementation.
@author
@author
@version
class PostgreSQLDatabase extends Database {
@Override
public String connect() {
return "Connected to PostgreSQL";
}
@Override
public String executeQuery(String query) {
return "Executing in PostgreSQL: " + query;
}
}
SQLite-specific database implementation.
@author
@version
class SQLiteDatabase extends Database {
@Override
public String connect() {
return "Connected to SQLite";
}
@Override
public String executeQuery(String query) {
return "Executing in SQLite: " + query;
}
}
Driver class demonstrating database polymorphism.
@author
@author
@version
public class DatabasePolymorphismExample {
Connects to a database and runs a target query using polymorphism.
@param database
@param query
public static void runQuery(Database database, String query) {
System.out.println(database.connect());
System.out.println(database.executeQuery(query));
}
Main method executing queries across different database types.
@param args
public static void main(String[] args) {
Database mysql = new MySQLDatabase();
Database postgres = new PostgreSQLDatabase();
Database sqlite = new SQLiteDatabase();
String query = "SELECT * FROM users";
runQuery(mysql, query);
System.out.println();
runQuery(postgres, query);
System.out.println();
runQuery(sqlite, query);
}
}