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

在java中重写来自不同类的方法

邵浩大
2023-03-14

来自java教程

>

  • 与实例的超类相同的包中的子类可以覆盖任何未声明为私有或最终的超类方法。

    不同包中的子类只能重写声明为public或protected的非final方法。

    但有什么区别?如果一个方法没有声明为private,那么它必须是public还是protected no?

  • 共有2个答案

    薛涛
    2023-03-14

    事实上,没有。

    方法可以是公共的、受保护的、私有的或包私有的。如果不指定访问修饰符,则该方法是包私有的。

    很明显,为什么来自不同包的类不能覆盖包私有成员。

    薛宇
    2023-03-14

    这一点可以重新表述为:您只能重写您的类有权访问的方法,如果这个方法不是final。

    因此,如果您在放置基类(或接口)的包之外创建类,您只能重写非最终公共和受保护的方法。

    若派生类和基类在同一个包中,那个么您也可以在不使用访问修饰符的情况下重写非final方法(受包保护)。

    你永远不能覆盖私有方法。

     类似资料:
    • 问题内容: 我读过一本书,说如果签名相同,我可以覆盖一个方法。根据书中的方法签名是Method_Name + Parameters传递的。 根据这本书,我可以重写具有不同返回类型的方法。在Java中实际上是否可以覆盖具有不同返回类型的方法?因为我在网上进行了一些搜索,所以我发现有人说要覆盖方法,返回类型也应该相同。 根据这本书,它还说,当我们尝试重载具有相同方法名称和参数但返回类型不同的方法时,j

    • 我读过一本书,它说我可以覆盖一个方法,如果它有相同的签名。根据这本书,方法的签名是Method_Name参数传递。 根据这本书,我可以重写具有不同返回类型的方法。在Java中,是否可以用不同的返回类型重写方法?因为我在网上做了一些搜索,我发现有人说要覆盖一个方法,返回类型也应该相同。 根据这本书,它还说,当我们试图用相同的方法名和参数重载一个方法,但返回类型不同时,java会抛出编译错误,因为签名

    • 我有一门狗和猫的课,看起来像这样: 这些类都实现了我创建的一个名为Speakable的接口,它看起来像这样: 这个Speakable接口之所以存在,是因为我需要一个引用变量,允许我将狗和猫添加到同一个ArrayList中,并且仍然在它们上调用说话()方法。 我还需要重写Comparable接口的compareTo()方法,以便比较狗的名字。调用此方法时,我认为我的代码如下所示:a.compareT

    • 假设我在某个类上有一个同步方法: 我在不使用同步修饰符的情况下覆盖了它: 关于这个场景,我有几个具体的问题: 重写的方法也会隐式同步吗? 如果没有,-call会同步吗? 如果没有-call,会同步任何东西吗? 有没有办法强制覆盖方法使用(我注意到抽象方法定义或接口内的方法定义不允许同步关键字)?

    • 问题内容: 当要依赖的测试与具有此批注的测试属于同一类时,批注的属性可以正常工作。但是,如果要测试的方法和依赖的方法位于不同的类中,则该方法不起作用。示例如下: 有什么办法可以解决这个限制?一种简单的解决方法是在该调用中创建测试。但这将是过多的重复。 问题答案: 将方法放在中并使用。 建议验证*中的配置,并在该处出现问题时抛出错误,以使测试无法运行。这样,测试可以只关注测试。

    • 为什么我的子类方法不重写其父类中相同签名的方法? 我有一个类,它扩展了一个抽象类,后者扩展了抽象类Actor(这里的上下文是一个pong游戏)。和都有一个具有相同签名的方法: 目的是让方法重写的方法。这里的问题是,当我在内部调用时,只调用的方法。 在中的上设置的断点会脱扣,而在中的上设置的断点从不脱扣。我还在方法上尝试了,但它仍然调用方法。 目标是让对象以与其他对象不同的速度上下移动。因此方法也会