`

关于子类和父类实现同一个接口

    博客分类:
  • Java
阅读更多

这个问题是由下面的代码引出的:

 

public class StartupListener extends ContextLoaderListener
    implements ServletContextListener {
……
}

 

可以看到,ContextLoaderListener已经实现了ServletContextListener这个接口, 而StartupListener继承了ContextLoaderListener.为什么 StartupListener还要实现ServletContextListener接口?(它的父类不是已经实现这个接口了么?)

 

简单的说,上面的例子是下面这样的:

 

B  implements  A

C extends  B  implements  A

 

就是说红色的代码有什么用?

 

我原来认为是多余的。实际上, 子类再次实现父类实现的接口是为了强制子类重写父类中实现的所有接口中的方法

分享到:
评论
3 楼 抛出异常的爱 2011-03-06  
主要是由于父类与接口名不能体现实现关系.....
而子类语义上有接口必须存在的意义

比如complare接口
你不知道父类是否含有complare接口
但你继承之后可以选择复写父类complare或不复写......

希望能对你有帮助.
2 楼 vivus 2010-10-26  
nneverwei 写道
刚看到你昨天的评论,再次确定我当时的想法是没有错误的。C实现B已经实现了的接口,是为了保证B拥有的方法C全部都拥有。我博客里可能没表述清楚。

同时,我认为@Override的作用不是你说的强制重写,而是在编译的时候检查实现或继承的方法是否正确。

刚看到你的回复,请问:
你是怎样确认的?能贴贴你的测试代码吗?
1 楼 vivus 2010-10-11  
是这样的吗?没觉得哦。只有标注了@Override的方法才强制重写吧?

相关推荐

    WPF继承_子类继承父类,实现跨类调用方法

    在Windows Presentation Foundation (WPF) 中,继承是面向对象编程的一个关键特性,它允许子类继承父类的属性、字段和方法,以便扩展或重写它们。标题“WPF继承_子类继承父类,实现跨类调用方法”表明我们将讨论如何...

    java 子类对象赋值给父类对象的使用

    例如,假设我们有一个`Animal`父类和一个`Dog`子类,那么`Dog`就是`Animal`的一种类型。当我们有以下代码: ```java Animal animal = new Dog(); ``` 这里的`animal`引用实际上指向了一个`Dog`对象,这就是向上...

    父类赋值给子类

    在编程领域,特别是面向对象编程中,"父类赋值给子类" 是一个常见的操作。C# 作为一种强大的面向对象的语言,提供了多种方式来实现这种继承关系下的数据复制。这里我们将深入探讨如何在 C# 中进行父类属性到子类属性...

    再次详细说明在继承中的程序执行顺序,子类与父类到底哪个先执行

    - 在Java中,一个类只能直接继承一个父类,但可以实现多个接口。接口中的方法默认是抽象的,所以子类必须提供这些方法的实现。在Python中,通过多重继承可以同时继承多个父类。 综上所述,程序执行顺序的基本原则...

    java中的继承(子类调用父类构造方法还不懂).doc

    继承允许创建一个新的类(称为子类或派生类),该类继承了现有类(称为父类或基类)的所有属性和行为。通过继承,子类不仅可以重用父类的功能,还可以扩展或覆盖父类的行为。 #### 二、子类如何调用父类构造方法 ...

    java子类重写父类的方法.doc

    - 子类尝试重写:`public void method()` —— 这种情况下,子类中的`method`实际上是一个全新的方法,而非对父类方法的重写。 #### 三、总结 通过以上六个规则,我们可以看到Java对方法重写的严格规定,旨在保证...

    JAVA 子类继承父类的范例 可直接运行

    关于继承的更多细节,Java语言还支持单继承和多层继承,即一个类只能有一个直接父类,但通过继承链可以间接地继承多个类。继承与封装、多态一起构成了面向对象程序设计的三大基本特征。 在项目中直接运行代码之前,...

    子类删除父类组件。很好的一个例子哦。大家来下啊

    标题中的“子类删除父类组件”涉及到面向对象编程中的继承和对象的生命周期管理,这里以Delphi编程语言为背景。在Delphi中,我们经常使用继承来创建新的组件类,这些子类可以扩展或修改父类的行为。然而,通常情况下...

    以员工为编写一个程序,定义如下类:以员工为父类,该类包含员工的基本信息:姓名、年龄、部门。创建两个子类:经理类和工人类,输出经理和工人的工资。在父类中编写getSalary()方法,在子类中覆盖,实现多态。

    1. **增强多态性**:虽然当前的实现已经展示了多态的概念,但可以进一步扩展,例如通过在父类`Employee`中添加更多的通用方法或属性,让子类可以根据需要重写或扩展这些方法。 2. **提高代码质量**:可以通过增加...

    继承与接口的含义以及其子类相关的含义

    Java中的继承是单继承的,也就是说一个子类只能有一个直接父类。如果要声明一个类B继承类A,需要满足以下条件: 1. 类A非final。 2. 类A是public的,或者类B与类A位于同一包内。 例如: ```java class People { ...

    Java序列化中子类、父类构造函数问题实例分析

    在Java中,如果父类实现了序列化接口,那么其子类就不需要实现序列化接口。例如,在上面的实例中,Foo类实现了Serializable接口,那么其子类Foo1和Foo2就不需要实现Serializable接口。 二、构造函数的调用 在创建...

    继承的小例子

    在Java编程语言中,继承是面向对象编程的一个核心特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。这个概念在软件工程中扮演着至关重要的角色,因为它促进了代码的重用、扩展和组织。标题"继承的小...

    黑马程序员 - Java基础教学 - 08 - 面向对象(4)-多态.doc

    继承是指子类继承父类的所有成员变量和成员方法,而实现是指子类实现接口中的方法。在上面的示例代码中,我们使用了继承关系,例如`Cat`继承自`Animal`,`Dog`继承自`Animal`,`Pig`继承自`Animal`。 三、多态的...

    实验3 抽象类和接口(2学时)

    2、以电话为父类,移动电话和固定电话为两个子类,并使移动电话实现接口:可移动。固定电话又有子类:无绳电话。定义接口及各类,明确他们的继承关系。 3、在实验2中所实现的Teacher类的基础上,修改Teacher类的代码...

    java 类的继承 基础理解

    2. 多继承:一个子类继承多个父类(Java 不支持多继承,但可以使用接口实现多继承)。 3. 多级继承:一个子类继承一个父类,该父类又继承另一个父类。 继承的关键字: 1. `extends`:用于继承父类,格式为 `public...

    面向对象oop详解

    多态是OOP的另一个核心特性,它允许我们通过一个接口引用多个不同的实现,即同一个行为具有多种状态。多态可以分为编译时多态和运行时多态。编译时多态是通过方法重载(overload)实现的,它依赖于参数的不同来区分...

    Java多态和实现接口的类的对象赋值给接口引用的方法(推荐)

    Java的多态性是面向对象编程的一个核心特性,它允许我们使用父类(或接口)的引用指向子类(或实现接口的类)的对象。这样做的好处在于代码的灵活性和可扩展性,使得程序能够处理多种不同的对象类型,而不必关心具体...

    Java 接口与继承

    继承是Java中创建新类的一种方式,它允许一个子类(SubClass)从一个已存在的父类(SuperClass)中获取属性和方法。这种机制使得子类可以扩展父类的功能,而无需重新编写父类的代码。在Java中,创建子类的语法如下:...

    简单的java类的重写还有父子类的练习(多种图形面积求取)

    这个练习主要涉及了如何创建一个基础的图形类(Shape)作为父类,并通过子类重写父类的方法来实现不同图形面积的计算。下面将详细介绍这个过程。 首先,`Shape`类可以定义为一个抽象类,因为它的实例无法直接创建,...

    利用反射子父类赋值高效工具类案例extends_setvalue.zip

    例如,我们可以创建一个静态方法,接收父类和子类的Class对象以及一个包含所有字段值的Map。然后,遍历Map,根据键(字段名)找到对应的Field,调用`set()`方法设置值。 此外,对于子类扩展了父类的情况,我们还...

Global site tag (gtag.js) - Google Analytics