0 0

不能覆写3

import java.util.*;
class Parent {
public void m1(List<String> list)
{
System.out.println("父类"); 
}
}
class Baby extends Parent {
public void m1(List<Integer> list)
{
System.out.println("子类"); 
}
 
}
class OverrideTest {

public static void main(String[] args) {
 
}
}
方法m1的签名的擦除相同但是不能覆写,求解答
OO 
2011年8月26日 10:46

5个答案 按时间排序 按投票排序

0 0

采纳的答案

原因就在于这两个方法无论重载还是重写,泛型擦除了就是一样的方法了。你想想,同一个类里面可能有两个完全一样的方法吗,不可以是吧

2011年8月26日 11:03
0 0

这完全是编译器层面的检测。

编译器知道这两个方法是父子类,方法名一样,因为泛型擦除的关系,参数类型最终也会一样,都是个List,按理说这应该是覆盖,但编译器有自己的职责,要保证泛型类尽可能不出现类型转换错误(泛型也就在编译期起类型保护用),这个“覆盖”很显然会带来多态调用的类型转换错误,所以就导致这段代码编译通不过

2011年8月26日 11:24
0 0

参数类型不同,导致不能复写。

2011年8月26日 11:04
0 0

方法m1的签名的擦除相同?

擦除还是参数?

引用

override(重写)
1、方法名、参数、返回值相同。
2、子类方法不能缩小父类方法的访问权限。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、存在于父类和子类之间。
5、方法被定义为final不能被重写。

overload(重载)
1、参数类型、个数、顺序至少有一个不相同。 
2、不能重载只有返回值不同的方法名。
3、存在于父类和子类、同类中。


而你两个方法的参数并不一致吧,应该算是重载吧。

2011年8月26日 10:55
0 0

因为擦除之后就是一样的啊 你不是问过的么

2011年8月26日 10:51

相关推荐

    Visual C程序员面试问题及答案.pdf,这是一份不错的文件

    因此,不能将非静态方法覆写为静态,也不能覆写私有虚方法,因为私有方法在子类中不可见。 12. **防止继承**:使用`sealed`关键字可以阻止一个类被其他类继承。例如: ```csharp 密封类 SealedClass {} ``` 理解并...

    C面向对象编程基础PPT课件.pptx

    8. **覆写规则**:覆写方法的访问级别必须与被覆写的方法相同,不能覆写`static`或非`virtual`方法。覆写可以在继承链的任意层级上发生,根据`override`或`new`的使用,调用会执行最派生版本的方法。 以上内容构成...

    .NET面试大全

    12. **私有虚方法的覆写**:不能覆写私有虚方法,因为子类无法访问父类的私有方法。 13. **阻止继承**:使用`sealed`关键字可以阻止一个类被继承。 14. **限制方法覆写**:一个类可以是public并包含seal修饰的方法...

    Visual C#程序员面试基础问题和答案.doc

    静态方法不能覆写非静态方法。 12. **私有虚方法覆写**:私有虚方法不能被覆写,因为子类无法访问父类的私有方法。 13. **阻止继承**:使用sealed关键字可以阻止一个类被其他类继承。 14. **部分继承限制**:可以...

    行业分类-设备装置-一种数据覆写方法.zip

    1. **覆写次数**:通常,一次覆写可能不足以彻底销毁数据,因为现代数据恢复技术有时能恢复部分信息。国际标准如DoD 5220.22-M建议进行7次覆写,以提高数据的不可恢复性。 2. **覆写算法**:选择合适的覆写算法也是...

    重载与覆写/重写的区别

    可是对于覆写而言,绝对不能修改返回值类型,但是在子类中所覆写的方法应该可以继续进行重载。 重载(Overloading)  (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时...

    c#经典题目

    不能将非静态方法覆写为静态方法,也不能覆写私有方法。 #### 12. 阻止类被继承 通过使用`sealed`关键字,可以禁止一个类被其他类继承,从而确保类的最终形态。 #### 13. 控制方法覆写 若想允许类被继承,但阻止...

    Java的覆写操作实例分析

    Java的覆写操作实例分析 Java的覆写操作是一种常见...* 被覆写的方法不能拥有比父类更严格的访问控制权限。 Java的覆写操作是一种非常有用的技术,可以帮助我们实现子类继承父类的属性和方法,并对其进行修改和扩展。

    覆写

    - 覆写的方法不能降低访问权限,例如,如果父类方法是`public`,子类覆写不能改为`protected`或`private`。 - 父类的`final`方法不能被覆写。 - `abstract`方法在子类中必须被覆写,除非子类也是`abstract`的。 ...

    Spring Cloud 覆写远端的配置属性

    2. `overrideNone`: 当 `allowOverride` 为 `true` 时,`overrideNone` 如果设置为 `true`,意味着外部配置的优先级更低,且不能覆盖任何已存在的属性源。默认为 `false`。 3. `overrideSystemProperties`: 默认为 ...

    详解java重载与覆写的区别

    3. **static和final修饰的方法**:静态方法不能被覆写,因为它们不属于类的实例,而是属于类本身。同样,`final`方法也不能被覆写,因为它们的行为已经固定,不可改变。 4. **构造方法**:构造方法不能被覆写,但...

    解决Kotlin 类在实现多个接口,覆写多个接口中相同方法冲突的问题

    然而,这种做法并不理想,因为它会导致编译错误,因为不能有两个同名的覆写方法。所以,我们需要采用更复杂的方式,比如使用条件语句来根据条件调用不同的接口方法。以下是一个示例: ```kotlin abstract class A {...

    Spring Cloud 覆写远端的配置属性实例详解

    - `spring.cloud.config.overrideNone`: 如果`allowOverride`为`true`,此属性设置为`true`,则外部配置的优先级更低,且不能覆盖任何已存在的属性源。默认值为`false`。 - `spring.cloud.config....

    javascript 方法覆写实例代码

    JavaScript中的方法覆写主要指的是在子类中...在实际开发中,无论是使用传统的原型链继承还是ES6引入的class继承语法,理解和正确运用方法覆写都是至关重要的,这能有效地帮助开发者构建更为复杂和功能丰富的应用程序。

    pytorch ImageFolder的覆写实例

    本文将详细介绍如何覆写 `ImageFolder` 类,以便在利用其便捷功能的同时,还能满足特定的需求。 #### 二、`ImageFolder` 类简介 `ImageFolder` 类位于 `torchvision.datasets` 模块中,它是一个数据加载器 ...

    C#程序员面试问题及答案

    答案:不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将 virtual 改为 override。 知识点:覆写方法的签名必须与被覆写方法的签名保持一致,不能将非静态方法覆写成静态方法。 12. 可以覆写私有的虚...

    C# 基础知识问答!!!!!!!!!

    14. **禁止方法覆写**:可以将类标记为`public`,并将方法标记为`sealed`,这样类可以被继承,但该方法不能被覆写。 15. **抽象类与接口**:抽象类是不能实例化的,可以包含抽象方法和具体实现。接口只包含公共抽象...

Global site tag (gtag.js) - Google Analytics