题目要求:
类图:
类名以 I 开头,一般为接口;
虚线:实现;
实线:继承;
题目分析:
方案一里两个子类的方法除了connect方法其他都是重复的,写两遍非常麻烦,所以方案二更简洁
方案一:
package practice3;
public interface IDAO {
void connect();
void add();
void del();
void upd();
void sel();
}
package practice3;
public class MySqIDao implements IDAO{
@Override
public void connect() {
System.out.println("mysql的连接……");
}
@Override
public void add() {
System.out.println("增加");
}
@Override
public void del() {
System.out.println("删除");
}
@Override
public void upd() {
System.out.println("修改");
}
@Override
public void sel() {
System.out.println("查询");
}
}
package practice3;
public class OracleDao implements IDAO{
@Override
public void connect() {
System.out.println("连接oracle……");
}
@Override
public void add() {
System.out.println("增加");
}
@Override
public void del() {
System.out.println("删除");
}
@Override
public void upd() {
System.out.println("修改");
}
@Override
public void sel() {
System.out.println("查询");
}
}
方案二:
package practice3;
public interface IDAO {
void connect();
void add();
void del();
void upd();
void sel();
}
package practice3;
public abstract class AbstractDAO implements IDAO{ //抽象类
@Override
public void add() {
System.out.println("增加");
}
@Override
public void del() {
System.out.println("删除");
}
@Override
public void upd() {
System.out.println("修改");
}
@Override
public void sel() {
System.out.println("查询");
}
}
package practice3;
public class MySqIDao extends AbstractDAO{
public void connect() {
System.out.println("连接mysql");
}
}
package practice3;
public class OracleDao extends AbstractDAO{
public void connect() {
System.out.println("连接oracle");
}
}
package practice3;
import java.util.Scanner;
public class Clients {
public static void main(String[] args) {
System.out.println("请问您想要连接的数据库是哪一个(1:MySQL,2:Oracle)");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
IDAO dao; //在外面声明变量
if (n==1) {
dao = new MySqIDao(); //向下转型
}else {
dao = new OracleDao();
}
dao.connect();
dao.add();
dao.upd();
dao.del();
}
}
总结:
- 本题主要考察接口和抽象类的使用和选择
- 接口:定义功能,其实现子类必须实现接口里的所有方法
- 抽象类:不一定非要继承接口的所有方法,可以只实现部分方法,剩下的再具体解决