前一段用到Spring的ApplicationContext接口,查看它提供的方法,打开jar包,看到的信息如下:
public abstract interface ApplicationContext extends ... {
public abstract ApplicationContext getParent();
...
}
发现interface前有个abstract,怎么还有抽象接口(abstract interface)一说,接口不都是抽象的吗,这样写难道还有什么特殊意义,很是纳闷。
上网查询一些资料,有的网友把一些有名的java书上写的关于接口的论述贴了出来:
在java in a nutshell里,
“All methods of an interface are implicitly abstract, even if the abstract modifier is omitted.”
在thinking in java里,
“the abstract keyword, which allows you to create one or more methods in a class that have no definitions—you provide part of the interface without providing a corresponding implementation, which is created by inheritors. The interface keyword produces a completely abstract class, one that provides no implementation at all.”
所以结论就是 abstract interface 就是interface,两者根本没有区别。
但是为什么他们要那样写啊,不是多此一举吗?是不是jar包中把隐含的abstract自动加上了呢,我又找到了源代码,果然,源代码中并没有abstract:
public interface ApplicationContext extends ListableBeanFactory, HierarchicalBeanFactory,
MessageSource, ApplicationEventPublisher, ResourcePatternResolver {
ApplicationContext getParent();
...
}
所以,结论就是:
interface已经隐含是abstract的,interface与abstract interface的作用是一样的,只是abstract interface是更完整的表示而已。
分享到:
相关推荐
接口与抽象类区别 在软件开发中,接口和抽象类是两个常用的概念,但它们之间的区别却让许多人感到困惑。那么,什么是抽象类和接口?它们之间有什么区别?下面,我们就来详细地探讨这个问题。 一、抽象类 抽象类是...
Java语言的接口与抽象类是面向对象编程中的关键概念,它们在设计模式和代码组织中起着重要作用。这里我们将深入探讨这两个概念,并分析它们的异同。 首先,接口(Interface)是Java中的一种特殊类型,它通过使用`...
C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例 C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例
Java 接口和抽象类 Java 编程语言提供了两种机制来实现面向对象编程的多态性:接口和抽象类。这两种机制使得 Java 应用开发具有灵活性和敏捷性。 抽象类 抽象类是一种特殊的类,它不能被实例化,不能被直接使用,...
C# 中接口与抽象的区别 C# 中的接口和抽象类是两个重要的概念,但是它们之间的区别却经常被人们混淆。下面我们将详细讲解接口和抽象类的区别,并探讨它们在编程中的应用。 抽象类是特殊的类,只能被继承不能被实例...
在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性的关键...通过阅读"java中接口与抽象类的详细分析与比较.doc"文档,你将获得更深入的洞察和实践指导,进一步提升你的Java编程能力。
### 接口与抽象类详解 #### 一、引言 接口与抽象类是面向对象编程中的两个核心概念,它们都是为了实现代码的重用性和灵活性而设计的。本文将详细探讨接口与抽象类的区别,并结合实际编程场景来分析何时使用接口、...
java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例...
#### 抽象类与接口的基本概念 1. **抽象类**:抽象类是一种不能被实例化的类,它可以包含抽象方法(没有实现的方法)和具体方法(有实现的方法)。抽象类的主要目的是为子类提供一种共有的基本结构,子类必须实现...
这里我们将详细讨论这些概念以及抽象类与接口之间的相同点和区别。 首先,让我们来看看抽象类(Abstract Class): 1. 抽象方法是只有声明没有实现的方法,可以视为没有方法体的虚方法。例如: ```csharp public ...
### Java利用接口和抽象类改写求圆的面积和梯形的面积 #### 深入理解Java的接口和抽象类 在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性和代码复用的重要概念。它们都无法被...
### 抽象类与接口的区别 #### 一、理解抽象类与接口的基本概念 在面向对象编程中,抽象类和接口都是重要的概念,用于描述共有的特性或行为,但它们在实现方式和用途上有所不同。 **抽象类**: - **定义**:抽象类...
内容概要:本文详细介绍了 Kotlin 中接口与抽象类的概念、定义和使用方法。首先概述了 Kotlin 语言的特点及其在 Java 平台上的优势。接着深入探讨了类与对象的基本用法,并详细讲解了接口和抽象类的作用,包括它们的...
接口与抽象类的选择取决于具体的设计需求。如果关注的是行为的规范,且可能有多个实现者,那么接口是更好的选择。如果需要共享实现细节或者提供默认行为,抽象类则更为合适。 在压缩包中的"抽象类与接口"文件中,你...
Java抽象类与接口实验报告
内容概要:本文详细介绍了C#面向对象编程中的接口与抽象类的定义、实现及其在实际开发中的应用场景。首先,文章回顾了面向对象编程的基础概念,包括类与对象、封装、继承和多态。接着,详细探讨了接口和抽象类的定义...
【C#抽象类与接口方法】在C#编程语言中,抽象类和接口是两种用于实现多态性和封装的关键概念,它们允许我们设计灵活、可扩展的代码结构。 抽象类是一种特殊的类,它不能被实例化,而是作为其他类的基类使用。抽象类...