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

我们可以修改子类中父成员变量或方法的访问修饰符吗?

滕璞瑜
2023-03-14

只见有人写道:

子类中受保护成员的可见性可以修改。

然后我就迷惑了,我知道父类中方法的访问修饰符可以在它的实现中修改,如下所示:

class Parent {
    protected void m1(){}
}

class SubClass extends Parent {
    
    @Override
    public void m1() {
        super.m1();
    }
}

但是我不知道如何在子类中将一个成员变量的受保护访问修饰符修改为public。代码实现是什么样的?

共有2个答案

单于飞鸣
2023-03-14

我们不能缩小修饰词的范围,只能增加注释:private不能被覆盖

  class Parent {
    protected void m1() {
    }

    private void m2() {
    }// can not override private method

    void m3() {
    } //Can increase the scope also

    public void m4() {
    } //Can not reduce the scope  only public allow in subclass
}

class SubClass extends Parent {

    @Override
    public void m1() {
        super.m1();
    }

    @Override
    protected void m3() {
        super.m3();
    }
}
柳英资
2023-03-14

访问修饰符可以在子类中更改,但有一些特定的规则必须遵守-

在Java有四种类型的访问修饰符:

Default – No keyword required
Private
Protected
Public

使用访问修饰符进行方法重写时,they只是一条规则,即使用访问修饰符进行方法重写。

规则:如果您正在重写任何方法,重写的方法(即在子类中声明的)必须不具有更多的限制性。

按递减顺序排列的访问修饰符限制:

private
default
protected
public

即private比default更受限制,default比protected更受限制,等等。

 类似资料:
  • 我试图理解decorator是如何工作的,我想知道一个修饰过的函数是否可以访问decorator的变量。例如,在下面的代码中,如何使f1能够访问localVariable?这可能吗?这是一种很好的做事方式吗?

  • 我想如果一个类被声明为public,它可以从任何地方访问。但是为什么eclipse称之为错误呢?

  • JAVA访问修饰符的可访问性 公众 在 同一班级 同一套餐 子类 宇宙/其他软件包 我在互联网上寻找这些问题的答案,因为我有多个答案。一个视频说未声明的访问修饰符是公共的,而我看到另一个书面来源说未声明的访问修饰符在子类和其他包中没有限制。试图确认哪个是真的。

  • C++ 类 & 对象 数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。关键字 public、private、protected 称为访问修饰符。 一个类可以有多个 public、protected 或 private 标记区域。每个标记区域在下一个标记区域开始之前

  • 问题内容: 有没有理由可以更改覆盖方法的访问修饰符?例如, 然后将package-private访问修饰符更改为, 我只是出于好奇而问这个问题。 问题答案: Java不允许您对access修饰符进行 更严格的限制 ,因为这会违反以下规则:子类实例应该可以代替超类实例使用。但是当涉及到 减少 访问限制时……好吧,也许超类是由另一个人编写的,他们没有想到您要使用其类的方式。 人们编写的程序以及编程时所

  • 主要内容:私有(Private)成员,实例,保护(Protected)成员,实例,公共(Public)成员,实例,作用域保护,实例Scala 访问修饰符基本和Java的一样,分别有:private,protected,public。 如果没有指定访问修饰符,默认情况下,Scala 对象的访问级别都是 public。 Scala 中的 private 限定符,比 Java 更严格,在嵌套类情况下,外层类甚至不能访问被嵌套类的私有成员。 私有(Private)成员 用 private 关键字修饰,带