接口的作用简单一点就是:接口是用来标记类的,不同的类属于不同的接口(通过向上转型),管理接口比管理各种各样的类方便多了,接口体现了抽象的观点,什么是抽象?抽象就是"抽去像的部分"。
使用接口解决问题
问题:现在我们要写个连接数据库的类给用户使用,有两个函数:一个返回Connection对象,另一个是关闭数据库,close(),一般的解决方法是:给每个数据库写一个类,再根据用户使用的数据库决定使用具体的类。
好的,我们看看这样有什么不好之处:
(1).首先每个类都要有重复的代码,造成代码的膨胀;
(2).其次最重要的是我们并不知道用户使用什么数据库,可能是Oracle,可能是mysql,也可能是sqlserver等,这个问题很难解决。
解决方案:
首先我们定义接口:
public interface DataBase
{
java.sql.Connection openDB(String url,String user,String password);
void close();
}
我们定义了两个方法,openDB返回Connection对象,close()关闭数据库;
具体的实现在实现DataBase接口的类中;
下面看看实现:
import java.sql.*;
public class Mysql implements DataBase
{
private String url=”jdbc:mysql:localhost:3306/test”;
private String user=”root”;
private String password=””;
private Connection conn;
public Connection openDB(url,user,password)
{
//连接数据库的代码
}
public void close()
{
//关闭数据库
}
}
类mysql实现了DataBase接口,下面还有实现了DataBase接口的oraclesql等类;
这些类都归于DataBase接口了,如何在应用程序中使用呢?
我们要定义DataBase对象 myDB,通过myDB来操纵数据库,可以不要分清是哪个类了。
另外的问题:Java中不许我们实例化接口,如DataBase myDB=new DataBase();
我们只能myDB=new Mysql()或者myDB=new Oracle()。这样我们还必须指定实例化哪个对象,好像前面的努力都白费了啊!!那怎么办呢,我们需要一个工厂:
public class DBFactory
{
public static DataBase Connection getConn()
{
Return(new Mysql());
}
}
实例化的代码变成:myDB=DBFactory.getConn();
整个过程中接口不负责任何具体操作,其他的程序要连接数据库的话,只需要构造一个DB对象就OK,而不管工厂类如何变化。这就是接口的意义----抽象。
分享到:
相关推荐
Java反射是Java编程语言中的一个重要特性,它允许运行时的Java程序访问并操作类、接口、字段和方法等对象,即使这些对象在编译时并未被明确引用。反射提供了动态类型的能力,使得代码可以在运行时检查类的信息,创建...
本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者以及希望深入理解多线程的开发者。 1. **线程的基本概念**:线程是程序执行的最小单位,一个进程中可以有多个线程同时运行。Java...
本实例将详细讲解如何在Java编程中运用代理模式。 代理模式的核心思想是为一个对象创建一个代理对象,这个代理对象在客户端和目标对象之间起到中介的作用,可以控制对目标对象的访问,或者在调用目标对象的同时增加...
Java 泛型编程是一种强大的工具,它允许我们在编写代码时引入类型参数,从而提高了代码的灵活性和安全性。泛型在Java中主要应用于类、接口和...泛型是Java中不可或缺的一部分,对于提高代码质量和效率有着显著的作用。
《VRML与Java编程实例讲解》是一...通过这本《VRML与Java编程实例讲解》,读者不仅可以掌握VRML的基本语法和3D建模技巧,还能深入理解如何利用Java提升VRML应用的交互性和动态性,从而在虚拟现实领域中迈出坚实的一步。
Java接口是一种完全抽象的类型,用于定义行为规范,实现多继承功能。 5. **CH17**: 可能涉及输入/输出(I/O)流。Java的I/O库非常强大,包括了文件读写、网络通信等各种场景的处理。 6. **ch8**: 可能介绍了集合框架...
主要对举例对国家气象局接口自动化测试进行讲解(Get请求及结果断言),以达到自动化测试入门目的,需要有一定的JAVA知识(HTTP相关)。
在Java中,实现多线程主要有两种方式:继承`Thread`类和实现`Runnable`接口。 1. 继承`Thread`类: 当一个类直接继承自`Thread`类,该类就成为了一个线程类。线程类需要重写`run()`方法,其中包含线程执行的具体...
本资源包含的"Java实例与讲解"详细介绍了Java的核心概念和技术,旨在帮助学习者深入理解并熟练掌握Java编程。 1. **Java基础**:Java的基础包括语法、变量、数据类型、运算符、控制结构(如if语句、for循环、while...
通过阅读和理解`java泛型实例讲解代码`中的代码,你可以深入学习如何在实际编程中应用这些概念,以及它们如何提升代码的健壮性和可维护性。这个压缩包可能包含了各种示例,如泛型类、泛型方法、边界限制等,通过这些...
Java设计模式是软件开发中的一种最佳实践,它们是解决常见问题的经验总结,旨在提高代码的可重用性、可维护性和可扩展性。本资源包含了23种经典的Java设计模式的代码实例,对于正在学习Java的开发者来说,是提升理解...
7. **接口与抽象类**:接口是Java中定义行为的标准,而抽象类是不能实例化的类,它们为子类提供模板。实例可能会涉及这两者的使用。 8. **异常类**:Java提供了一系列预定义的异常类,如IOException、...
实例将通过实际代码展示如何在Java中应用这些模式。 11. **框架应用**:Spring、MyBatis、Hibernate等框架简化了企业级应用的开发。这些实例可能包含这些框架的配置和使用,如依赖注入、事务管理等。 12. **单元...
总结 Ant 脚本是 Java 开发中常用的构建工具,通过 XML 格式的配置文件描述构建过程。在 `build_for_ejb_templet.xml` 示例中,它详细定义了如何初始化项目、设置路径、编译 EJB 和 Web 模块,以及部署到 JBoss ...
Java多线程同步是编程中一个非常重要的概念,特别是在并发编程和高并发系统设计中起到关键作用。在Java中,为了保证线程安全,避免数据竞争和不一致的状态,我们通常会使用同步机制来控制对共享资源的访问。本文将...
除此之外,书中还会深入讲解Java Swing和JavaFX这两个图形用户界面(GUI)工具包,让你学会创建美观且功能丰富的桌面应用。对于Web开发,你将了解Servlet和JSP,掌握服务器端的Java编程技术。 在高级主题部分,你将...
在这个特定的压缩包文件中,"v1"可能代表第一版的源码实例,对应于《Core Java 2 Volume I》这本书的早期版本。 《Core Java 2 Volume I》是一本经典的Java编程教材,主要针对初学者和有一定基础的学习者。书中深入...
这本书的重点在于通过实例来讲解Java技术,使得读者能够更好地理解和掌握编程概念,从而提高实际开发能力。 首先,书中可能详细介绍了Java基础语法,包括数据类型、变量、运算符、流程控制(如if-else,switch,for...