`

漫谈Java语言的接口与类型安全

    博客分类:
  • JAVA
 
阅读更多
http://developer.51cto.com/art/201107/278010.htm

接口是实现构件可插入性的关键,可插入构件的关键在于存在一个公用的接口,以及每个构件实现了这个接口。下面介绍java语言的接口相关方面的知识。

什么是接口?

Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

接口的两种含义:

一,Java接口,Java语言中存在的结构,有特定的语法和结构;

二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。

前者叫做“Java接口”,后者叫做“接口”。

在Java语言规范中,一个方法的特征仅包括方法的名字,参数的数目和种类,而不包括方法的返回类型,参数的名字以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。

接口继承和实现继承的规则不同,一个类只有一个直接父类,但可以实现多个接口。

Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更抽象化。

Java接口的方法只能是抽象的和公开的,Java接口不能有构造器,Java接口可以有public,静态的和final属性。

接口把方法的特征和方法的实现分割开来。这种分割体现在接口常常代表一个角色,它包装与该角色相关的操作和属性,而实现这个接口的类便是扮演这个角色的演员。一个角色由不同的演员来演,而不同的演员之间除了扮演一个共同的角色之外,并不要求其它的共同之处。

为什么使用接口?

两个类中的两个类似的功能,调用他们的类动态的决定一种实现,那他们提供一个抽象父类,子类分别实现父类所定义的方法。

问题的出现:Java是一种单继承的语言,一般情况下,哪个具体类可能已经有了一个超类,解决是给它的父类加父类,或者给它父类的父类加父类,只到移动到类等级结构的最顶端。这样一来,对一个具体类的可插入性的设计,就变成了对整个等级结构中所有类的修改。

接口是可插入性的保证。

在一个等级结构中的任何一个类都可以实现一个接口,这个接口会影响到此类的所有子类,但不会影响到此类的任何超类。此类将不得不实现这个接口所规定的方法,而其子类可以从此类自动继承这些方法,当然也可以选择置换掉所有的这些方法,或者其中的某一些方法,这时候,这些子类具有了可插入性(并且可以用这个接口类型装载,传递实现了他的所有子类)。

我们关心的不是那一个具体的类,而是这个类是否实现了我们需要的接口。

接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。

类型

使用Java接口将软件单位与内部和外部耦合起来。使用Java接口不是具体的类进行变量的类型声明,方法的返还类型声明,参量的类型声明,以及数据类型的转换。

在理想的情况下,一个具体的Java类应当只实现Java接口和抽象Java类中声明的方法,而不应当给多余方法。
类型等级结构

Java接口(以及抽象类)一般用来作为一个类型的等级结构的起点。

如果一个类已经有了一个主要的超类型,那么通过实现一个接口,这个类可以拥有另一个次要的超类型,这种次要的超类型叫做混合类型。

Java接口常用方法

单方法接口


public interface Actionlistener(){  public abstract void actionPerformed(ActionEvent event);  }
仅且只有一个方法,只有实现了这个接口(重写这个接口中的唯一一个方法),你才有资格去事件监听器列表里注册(参数为Actionlistener类型),当事件源变动时,自动调用这个唯一的actionPerformed方法.

标识接口

是没有任何方法和属性的接口。标识接口不对实现它的类有任何语意上的要求,它仅仅表明了实现它的类属于一个特定的类型(传递)。

不推荐过多的使用标识接口。

常量接口

用Java接口来声明一些常量,然后由实现这个接口的类使用这些常量(以前在做画板的时候这么干过)。建议不要模仿这种常量接口的做法。

Java语言类型安全问题

Java是强类型的语言。这意味着Java编译器会对代码进行检查,以确定没一次赋值,每一次方法的调用是符合类型的。如果有任何不相符合的情况,Java编译器就会给出错误。

类型检查是基于这样一个简单的事实:每一变量的声明都给这个变量一个类型;每一个方法包括构造器的声明都给这个方法的特征。这样一来,Java编译器可以对任何的表达式推断出一个明显类型,Java编译器可以基于明显类型对类型进行检查。

Java语言是类型安全的。这就是说,任何被Java编译器接受的合法的Java类保证是类型安全的。换言之,在程序运行期间,不会有任何类型的错误。一个Java程序根本不可能将一个本来属于一个类型的变量当作另一个类型处理,因此也就不会产生由此而引起的错误。

简单的说,Java语言依靠三种机制做到了类型安全:编译期间的类型检查,自动的存储管理,数组的边界检查。

注:本篇大部分内容出之阎宏老师的《Java与模式》。

希望以上内容,能够给你带来帮助。

分享到:
评论

相关推荐

    Java安全漫谈 - 01.反射篇(1)1

    Java 反射机制安全漫谈 Java 反射机制是 Java 语言中的一种强大功能,允许程序在运行时访问和修改类的信息。然而,这种功能也引入了安全隐患。本文将讨论 Java 反射机制的安全问题,重点介绍反射机制的基本概念、...

    漫谈Java数据库存取技术

    标题与描述中的“漫谈Java数据库存取技术”聚焦于探讨Java领域中处理数据库存取的多种技术。本文将深入解析这些技术的核心概念、优势与局限性,以及它们如何适应不断变化的IT环境。 ### JDBC:Java数据库连接的基石...

    java 学习资料大全

    2. 接口与抽象类:接口是完全抽象的,定义了一组方法,而抽象类可以包含具体方法。两者都是实现多态的方式。 3. 内存管理:Java的垃圾回收机制自动管理内存,程序员无需手动释放。 4. 泛型:泛型提供类型安全,可以...

    java多线程设计模式详解(PDF及源码)

    目录 漫谈UML UML 类图 类和层次结构的关系 接口与实现 聚合 访问控制 类间的关联性 顺序图 处理流程和对象间的协调 时序图 Introduction 1 Java语言的线程 Java语言的线程 何谓线程 明为追踪处理流程,实则追踪...

    漫谈WebLogic-CVE-2020-25511

    1. IDL(Interface Definition Language)是一种接口定义语言,用于描述软件组件的API,以实现跨语言和跨平台的通信。Java IDL是Java实现的版本,允许Java程序与遵循IDL规范的其他系统交互。 2. RMI是Java的一种...

    漫谈设计模式.rar

    《漫谈设计模式》这本书以其独特的视角深入浅出地探讨了这一主题,尤其针对Java语言进行了详尽的阐述。在这个压缩包中,包含的文件“漫谈设计模式”可能是该书的电子版或者相关的学习资料。 设计模式的核心在于提高...

    大数据漫谈系列之:大数据怎么发挥大价值.rar

    虽然通常我们提到的大数据处理工具如Hadoop、Spark等主要使用Java,但C#可以通过.NET框架的Apache Spark接口(例如,Microsoft.ML和ML.NET)进行大数据处理。这使得C#开发者能够利用其熟悉的语法和强大的生态系统...

    通向架构师的道路(第七天)之漫谈使用ThreadLocal改进你的层次的划分.docx

    ThreadLocal 是 Java 语言中的一种机制,用于解决多线程程序中的并发问题。它提供了一种新的思路来编写多线程程序,使得编写多线程程序变得简洁易行。 ThreadLocal 的工作原理是,为每个线程提供独立的变量副本,...

    2017年OA系统技术横评比较:6款主流OA系统漫谈2017.12.21.pdf

    - 这部分可能会探讨不同OA系统如何与这些业务系统结合,以及提供的解决方案和接口。 5. **后续发展和市场趋势**: - 文档可能还会对未来OA系统的市场发展趋势、技术革新等进行预测和分析。 - 比如讨论云服务、...

    ASP学习资料(HTML格式)

    "交流论坛--漫谈Java中的中文问题[转帖].htm"可能讨论了在ASP中处理中文字符集的问题,尤其是在与Java应用交互时可能出现的编码兼容性问题。 "交流论坛--Java Servlet和JSP教程之三.htm"同样可能是对比分析ASP与...

    灸哥讲解创建型设计模式

    在后端开发,尤其是JAVA语言中,这些模式被广泛应用于构建复杂系统,提高代码复用率和灵活性。下面将逐一解析五个常见的创建型设计模式:单例模式、原型模式、工厂模式、抽象工厂模式以及建造者模式。 1. **单例...

    灸哥讲解结构型设计模式

    总结,灸哥讲解的结构型设计模式涵盖了门面模式、组合模式、装饰器模式、适配器模式和享元模式,这些都是在后端开发中,尤其是在JAVA语言中非常重要的设计模式。理解并灵活运用这些模式,能够帮助开发者编写出更加...

    灸哥讲行为型设计模式以及实战演练多种设计模式

    在后端开发中,尤其是使用JAVA语言时,这些行为型设计模式是解决问题的利器。例如,模板方法模式常用于框架和库的实现,迭代器模式用于遍历集合,责任链模式用于事件处理,策略模式用于动态选择算法,状态模式则常...

    xifre eclipse plugin jar

    3. **代码与WSDL同步**:当Java代码发生变化时,插件可以自动更新WSDL文件,保持代码和接口定义的一致性。 4. **调试支持**:Xifre还支持WSDL的调试功能,可以在Eclipse内直接测试Web服务,方便开发者快速定位问题...

    rambling-on-design-patterns

    《漫无边际的设计模式》是一本深入探讨设计模式的书籍,其主要针对的是Java编程语言。设计模式是软件工程中的重要概念,它们是为了解决常见问题而形成的一套最佳实践,是经验丰富的开发者们在特定场景下解决问题的...

Global site tag (gtag.js) - Google Analytics