gpt4 book ai didi

java - 为什么子类越骑只能比父类(super class)有更弱的访问权限

转载 作者:行者123 更新时间:2023-12-01 22:43:15 25 4
gpt4 key购买 nike

当涉及到覆盖时,只有一条与访问说明符相关的规则

"The subclass overridden method cannot have weaker access than super class method"

为什么子类被限制为具有更强的访问说明符?它会带来什么缺点,我猜测在设计层面会发生一些事情。

在这种情况下,让我们考虑该规则不存在1:具有较弱访问权限的父类说 public2:子类具有更强的访问权限,例如私有(private)

因此,如果任何外部类尝试访问该方法,它仍然可以从子类访问,因为它将在子类中继承,并且可与对象引用一起使用

请澄清。

public class A 
{
public void methOne(int a)
{
// something
}
}

class B extends A
{
private void methOne(int a)
{
// something else
}
}

class C
{
public static void main(String args[])
{
new B().methOne();
// in this special case after removing the specifier rule it will execute the method from parent class.
}
}

最佳答案

您尝试执行的操作无效,因为通过扩展 A B 的所有实例必须能够像A一样行事。例如:

A a = new A();
a.methOne(1);

比较:

A a = new B();
a.methOne(1);

在这两种情况下,所有代码都知道它有一个 A这一切A有一个名为 methOne 的方法。在第二种情况下,由于您尝试将该方法设为私有(private),但 A 被破坏了。已经说过它有一个可用的同名方法。

反之亦然,因为您不会使契约(Contract)无效。如果该方法在 A 中是私有(private)的并公开于 B那么您仍然可以使用 B 的实例就好像它是一个 A ,除非您知道您正在使用 B ,否则您无法访问该方法。 .

关于java - 为什么子类越骑只能比父类(super class)有更弱的访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25782177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com