当前位置: 首页 > 知识库问答 >
问题:

重写方法

澹台岳
2023-03-14

subA类是A类的子类。我试图重写一个方法,但不知怎的,它不允许我重写它。为什么会这样?是因为参数中的参数吗?

读取错误消息

名称冲突:subA中的add(E#1)和A中的add(E#2)具有相同的擦除,但两者都不重写另一个,其中E#1、E#2是类型变量:
E#1扩展了subA类中声明的对象
E#2扩展了A类中声明的对象

超类A:

public class A <E> {    

public void add(E toInsert) {...}

}

子类subA:

public class subA <E> extends A {      

//overrides the method from A class
public void add (E toInsert)    <-- doesn't let me overrides    
{...}  

}

共有3个答案

席言
2023-03-14
public class subA <E extends A> extends A { 

因为E是在A中定义的,所以需要将泛型扩展为与A is相同的泛型类型。我相信有人会有一个比我更好的解释,但我知道这是可行的。

程智明
2023-03-14

C编程中的函数重写

如果基类和派生类的成员函数具有相同的名称和参数。如果创建派生类的对象并编写代码访问该成员函数,则只调用派生类中的成员函数,即派生类的成员函数重写基类的成员函数。C编程中的这个特性称为函数重写。

示例演示C编程中的函数重写从派生类访问基类中被重写的函数

要从派生类访问基类的重写函数,请使用作用域解析运算符::。例如:如果要在上面的示例中从派生类访问基类的get\u data()函数,则在派生类中使用以下语句。

A: :get\u data;//调用类A的get\u data()。

这是因为,如果未指定类的名称,编译器会认为get\u data()函数正在调用自身。

重写函数中作用域解析运算符的用户-有关详细信息,请参阅:http://www.programiz.com/cpp-programming/function-overriding#sthash.7UmWybpS.dpuf

邢曦
2023-03-14

您正在对原始类(未提供泛型参数)进行子类化,根据Java语言规范的定义,该类从超类中剥离所有泛型信息。这意味着子类泛型方法与(现在)非泛型超类方法不兼容。

通过传递子类的泛型参数为A提供泛型参数:

public class subA <E extends Comparable<E>> extends A<E> {      

    @Override 
    public void add (E toInsert) {
        // ...
    }
}
 类似资料:
  • 在子类中如果创建了一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为 方法重写(override),又称为 方法覆盖。当父类中的方法无法满足子类需求或子类具有特有功能的时候,需要方法重写。 子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从而进行扩展增强。 在重写方法时,需要遵循

  • 我有一个库类中的案例,我想覆盖方法以减少我需要传递的参数数量以对其进行模式匹配。我这样做: 但我希望它只返回。这有什么问题?

  • 下面是这本书的一段话: 覆盖方法不得抛出比覆盖方法声明的异常新的或更广泛的检查异常。例如,声明FileNotFoundException的方法不能被声明SQLException、Exception或任何其他非运行时异常的方法覆盖,除非它是FileNotFoundException的子类。 现在我的问题是,如果超类中的方法抛出一个异常,那么重写方法能否根本不抛出一个异常? 因为我刚刚在Java中尝试

  • 这里我有两个类DemoParent和DemoChild,它们扩展了DemoParent,在DemoParent中我有通用方法m1(int I),但在DemoChild中我有varargs方法m1(int…I)。当我创建子类的对象并调用m1方法时,它会给我父类方法输出。请参见下面的输出。o/p-母公司 有人能解释为什么父类方法总是从子类引用调用,即使子类具有相同的方法? 但是如果我们反向代码,即父类

  • 问题内容: 我正在记录我已经开发的Java程序,并且想知道如果仅记录超类,是否将为继承的方法(被重写)生成JavaDoc? 如果我有一个用方法调用的类,而有一个用该方法重写的子类,那么如果Car类中没有放置Javadoc,Carss驱动方法中是否会包含Vehicles驱动方法的文档? 问题答案: [I]想知道如果我仅记录超类,是否将为继承的方法(被重写)生成JavaDoc? 是。如果在子类上没有j

  • 主要内容:如何调用被重写的方法前面讲过在 Python 中,子类继承了父类,那么子类就拥有了父类所有的类属性和类方法。通常情况下,子类会在此基础上,扩展一些新的类属性和类方法。 但凡事都有例外,我们可能会遇到这样一种情况,即子类从父类继承得来的类方法中,大部分是适合子类使用的,但有个别的类方法,并不能直接照搬父类的,如果不对这部分类方法进行修改,子类对象无法使用。针对这种情况,我们就需要在子类中重复父类的方法。 举个例子,鸟通