前一段用到Spring的ApplicationContext接口,查看它提供的方法,打开jar包,看到的信息如下:
public abstract interface org.springframework.context.ApplicationContext extends ... {
public abstract org.springframework.context.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是更完整的表示而已。
原文摘自:
http://www.cnblogs.com/sunwei2012/archive/2010/12/10/1902100.html
分享到:
相关推荐
在面向对象编程语言中,如Java,接口(Interface)和抽象类(Abstract Class)是两种非常重要的概念,它们都被用来实现代码的复用性和扩展性。但它们之间存在一些根本性的区别,这些差异对于正确地设计类结构至关...
Java语言的接口与抽象类是面向对象编程中的关键概念,它们在设计模式和代码组织中起着重要作用。这里我们将深入探讨这两个概念,并分析它们的异同。 首先,接口(Interface)是Java中的一种特殊类型,它通过使用`...
接口与抽象类区别 在软件开发中,接口和抽象类是两个常用的概念,但它们之间的区别却让许多人感到困惑。那么,什么是抽象类和接口?它们之间有什么区别?下面,我们就来详细地探讨这个问题。 一、抽象类 抽象类是...
在 PersonInterface 接口中,我们定义了一个抽象方法, 然后在 Person 类中实现了该方法。 结论 通过这两种机制,我们可以实现面向对象编程的多态性,从而使得 Java 应用开发具有灵活性和敏捷性。抽象类和接口使得...
在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性的关键概念,它们各自有特定的用途和优缺点。本文将深入探讨这两种概念,帮助你理解它们之间的区别以及如何在实际开发中选择使用...
也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。 3.abstract class...
### 接口与抽象类详解 #### 一、引言 接口与抽象类是面向对象编程中的两个核心概念,它们都是为了实现代码的重用性和灵活性而设计的。本文将详细探讨接口与抽象类的区别,并结合实际编程场景来分析何时使用接口、...
#### 抽象类与接口的基本概念 1. **抽象类**:抽象类是一种不能被实例化的类,它可以包含抽象方法(没有实现的方法)和具体方法(有实现的方法)。抽象类的主要目的是为子类提供一种共有的基本结构,子类必须实现...
3. 抽象类与接口的选择 在选择抽象类定义方式时,需要考虑问题领域的本质理解和设计意图是否正确、合理。abstract class 和 interface 之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,但是...
在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性和代码复用的重要概念。它们都无法被直接实例化,而是位于继承结构的顶层,被其他类实现或继承。接口和抽象类都可以包含抽象方法...
这里我们将详细讨论这些概念以及抽象类与接口之间的相同点和区别。 首先,让我们来看看抽象类(Abstract Class): 1. 抽象方法是只有声明没有实现的方法,可以视为没有方法体的虚方法。例如: ```csharp public ...
### Java中抽象类和接口的区别与作用详解 #### 一、引言 在Java编程语言中,`abstract class`和`interface`是两种用于定义抽象类的重要机制。这两种机制不仅支持了Java的强大面向对象特性,而且也在实际开发过程中...
与接口不同,一个类只能继承一个抽象类,但可以实现多个接口,这样就实现了接口的多重继承特性。抽象类的主要目的是为子类提供一个公共基类,它们可以从这个基类继承一些共同的属性和行为。 两者之间的主要区别在于...
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性...
接口与抽象类的区别 抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸,猪用肺呼吸。 动物类要有呼吸方法。怎么呼吸就是子类的事了。 现在有很多讨论和建议提倡用interface代替abstract类,两者从...
在Java编程语言中,抽象类和接口是两种重要的面向对象设计...通过这样的练习,你可以更好地理解和掌握Java中的抽象类与接口,以及它们在实际开发中的应用。在实践中不断尝试和调试,将有助于深化对这两个概念的理解。
### 抽象类与接口的区别 #### 一、理解抽象类与接口的基本概念 在面向对象编程中,抽象类和接口都是重要的概念,用于描述共有的特性或行为,但它们在实现方式和用途上有所不同。 **抽象类**: - **定义**:抽象类...
类实现接口* @author Y_tao*/public class InterfaceImpl implements TestInterface { @Override public String name() { return "接口实现类的name"; } @Override public void eat() { System.out.println("接口...
在Java编程语言中,接口(Interface)、抽象类(Abstract Class)和包(Package)是构建程序的重要组成部分。接口主要用于定义对象的行为规范,抽象类则提供了一种共享代码的方式,而包则是组织和管理类的一种机制。...