`
isiqi
  • 浏览: 16495381 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

[转载]java 的接口到底起什么作用

阅读更多

我想,可能不止我一个人有这个疑问,所以,把它贴出来。   

下面是madai和clkrst给我的回答。在此谢谢两位。   

我的问题是:

java 的接口到底起什么作用?

1、从书中看到的是java程序的接口中只定义了常量及空方法,空的方法有什么用呢?还要在类中写方法体,那还要接口干什么?

2、一个程序中写了2个接口,并在同一个类中写方法体,这与多继承有什么关系。

3、包中那些已定义的接口,怎么知道那里面定义了什么方法。说到底,接口有什么实际意义,哪本书都不讲,一味的讲是多继承,不结合实际实在不好懂Madai的理解是:java接口的用处主要体现在下面几个方面:

(1)通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。   

(2)通过接口可以指明多个类需要实现的方法。   

(3)通过接口可以了解对象的交互界面,而不需了解对象所对应的类。

Clkrst给出了更详细的解释:  类描述了一个实体,包括实体的状态,也包括实体可能发出的动作。接口定义了一个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。所以接口有点象一个规范、一个协议,是一个抽象的概念;而类则是实现了这个协议,满足了这个规范的具体实体,是一个具体的概念。   从程序角度,简单理解,接口就是函数声明,类就是函数实现。需要注意的是同一个声明可能有很多种实现。   所以就你的问题:  

1、接口中定义类方法的原型,但是不能说是空方法,因为空方法的意思是有实现体,只不过实现体是空操作。实际上接口没有定义任何实现体。具体的实现体都是在实现接口的类中,接口只是定义了这些方法的调用方式。   你当然也可以不用接口,直接在类里面写方法,但是如果你的一组方法需要在很多类里实现,那么把它们抽象出来,做成一个接口规范,不是更好么?   

2、一个类描述了一个实体,这个实体可能是一个复杂的对象,它的动作很多,如果把这些动作分类,用接口a定义其中的某一组动作,接口b定义其中的另外一组动作,这样的结构,比较清楚。   这种方式具备了多继承的优点,避免了多继承的缺陷。实际上在历史上,接口在很大程度上,是为了解决多继承带来的种种问题而设计出来的。   

3、包中那些已定义的接口,怎么知道那里面定义了什么方法。 接口里定义了方法的输入输出,这些都是协议,具体的实现都在每个类中。对于很多只需要抽象接口的地方,不需要知道具体的类是什么,只要这个类实现了这个接口就可以了。

分享到:
评论

相关推荐

    java语言整合API接口自动化测试框架

    接口测试框架 ...版权声明:本文为CSDN博主「雨水的早晨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_15283475/article/details/106494544

    Java SafeEngine API接口说明

    Java SafeEngine API接口说明 Java SafeEngine API接口说明是上海市数字证书认证中心有限公司开发的数字证书系统的接口说明,旨在提供给开发者使用Java语言开发安全的数字证书应用程序。该API接口提供了丰富的功能...

    通过JavaCompiler进行编译java文件(转载)

    此外,`JavaCompiler`还支持监听器接口,如`DiagnosticListener`,可以用来获取编译过程中产生的错误和警告信息,这对于调试和错误处理非常有用。 总的来说,通过JavaCompiler API,开发者可以轻松地在Java应用程序...

    web在线翻译程序--可当java接口使用

    项目描述 web在线翻译--调用python...python程序爬取的有道接口 运行环境 jdk8+tomcat9+IntelliJ IDEA+Jpython环境 项目技术(必填) spring+spring mvc+bootstrap+jquery+网络爬虫 数据库文件 无 jar包文件 ...

    【转载】java实现的局域网聊天软件

    Java提供了Thread类以及Runnable接口来支持多线程编程。 3. **IO流**: - **输入输出流**:Java的IO流用于数据的读写,例如InputStream和OutputStream用于字节流,而Reader和Writer处理字符流。在网络通信中,我们...

    JAVA数据库连接大全-转载

    这篇博客"JAVA数据库连接大全-转载"可能详细介绍了在Java中如何管理和使用数据库连接,包括使用JDBC API,数据库连接池以及相关的工具。这里我们将深入探讨JDBC、数据库连接池的重要性和配置方法。 1. **JDBC基础**...

    java文件路径操作详细(转载)

    Java NIO提供了`java.nio.file`包,包含`Path`接口和`Files`工具类,提供更现代的文件操作API。如`Files#exists(Path path)`、`Files#createFile(Path path)`等。 10. **Path接口**: `Path`接口是NIO的一部分,...

    Java cxf开发webservice,分别有客户端和服务端

    1.使用Java 2.用cxf开发webservice 3.这个服务端和客户端的小demo 在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送...

    (转载)文思创新 java开发工程师笔试题.doc

    创建新线程的起点是通过`Thread`类的`start()`方法或者实现`Runnable`接口并调用`Thread`对象的`start()`方法。在提供的选项中,正确的方法是D:`public static void main(String args[])`,因为`main`方法是Java...

    java面试资料(转载)

    Java提供了多种方式来创建和管理线程,如通过实现Runnable接口或继承Thread类。理解线程生命周期(新建、就绪、运行、阻塞、死亡),同步机制(synchronized关键字、wait()、notify()、notifyAll()以及Lock接口)...

    JAVA计算机管理系统

    描述中的“还是很不错的大家互相转载哈 多谢谢了哈哈可以用起我们继续努力”表达了开发者对于系统质量的自信,鼓励用户分享与使用,并表示团队会持续改进和努力。这表明该系统不仅在功能上得到了认可,而且开发者有...

    利用 Java 实现组合式解析器,基于 Java 的界面布局 DSL 的设计与实现(转载)

    5. **Java 内部 DSL**:如何利用 Java 的类、接口和方法来构造内部DSL,让代码更易读、易维护。 6. **解析库的使用**:如ANTLR、JavaCC等解析库的工作原理和使用方法,以及它们如何简化解析器的开发。 7. **界面...

    Java字节码(.class文件)格式详解((转载)

    Java字节码是Java程序在运行时被JVM(Java虚拟机)解释执行的一种中间语言。每个Java类都由一个`.class`文件表示,其中包含了编译后的字节码指令。`.class`文件的结构非常严谨,它不仅包含了类的信息,如类名、方法...

    java编程事项(转载收集整理版)

    同时,接口也是Java中实现多态性的重要方式。 3. **异常处理**:Java的异常处理机制是通过try-catch-finally语句块来实现的。理解如何正确抛出和捕获异常,以及何时使用特定类型的异常,对于编写健壮的代码至关重要...

    深入分析 Java I/O 的工作机制(转载)

    Java提供了Serializable接口,使得对象可以被序列化成字节流,便于存储或通过网络传输。ObjectInputStream和ObjectOutputStream负责对象的序列化和反序列化操作。 7. **NIO(非阻塞I/O)** Java 1.4引入了NIO...

    JAVA教程PPT文档

    非常好的学习资料,转载 • 最早是Sun公司GreenProject中撰写Star7应用程序的一个程序语言 – JamesGosling的窗外有颗橡树(Oak) • 全球信息网兴起,JavaApplet成为网页互动技术的代表 • 1995/5/23,Java ...

    JAVA OA平台源码(转载)SPRING BOOT....

    【标题】:“JAVA OA平台源码(转载)SPRING BOOT...” 这个开源项目是一个基于Java技术的OA(Office Automation)管理系统的源代码实现,利用了Spring Boot框架进行开发。Spring Boot是Spring生态中的一个核心组件...

    java编写建议(转载)

    ### Java编写建议详解 #### 一、编码规范与命名规则 **1.1 命名规则** - **类命名**: 使用大驼峰命名法,例如`ThisIsAClassName`。 - **方法与变量**: 使用小驼峰命名法,如`thisIsMethodOrFieldName`。 - **常量*...

Global site tag (gtag.js) - Google Analytics