首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >子类子类对成员的受保护访问

子类子类对成员的受保护访问
EN

Stack Overflow用户
提问于 2014-11-07 15:21:16
回答 2查看 1K关注 0票数 1

我正在为SJCP 6做准备,我发现到目前为止我还没有看到从声明成员的子类的子类中访问受保护成员的详细信息。我很清楚,只有当我们试图通过继承访问受保护成员时,才能从另一个包中访问受保护的成员,但是子类的子类如何,我们还能访问它吗?

书上说:

一旦包外子类继承了受保护的成员,该成员(由子类继承)成为子类以外的任何代码的私有成员,子类子类的子类除外。

我的问题是关于子类的子类,这些子类是如何将成员视为受保护的?他们能进入吗?因为它说成员对子类之外的任何代码都是私有的,子类的子类除外,那么他们是如何看待它的呢?

EN

回答 2

Stack Overflow用户

发布于 2014-11-07 15:22:31

如果BA的子类,而CB的子类,那么C也是A的子类,并且可以访问Aprotected成员。

票数 2
EN

Stack Overflow用户

发布于 2014-11-07 15:28:10

在超类中声明受保护的变量、方法和构造函数只能由其他包中的子类以及子类的子类或受保护成员类的包中的任何类访问。我刚在eclipse中为这个例子创建了一个例子,去试一试。为例

包测试中的MyClass类有一个名为get方法的保护方法

代码语言:javascript
运行
复制
package test;

public class MyStaticClass {


    protected int getmethod(){
        int a=0;
        return  a;
    }

}

相同包中的类A扩展了MystaticClass,并且在那里可以访问受保护的方法

代码语言:javascript
运行
复制
package test;

    public class A extends MyStaticClass{

        @Override
        protected int getmethod() {
            // TODO Auto-generated method stub
            return super.getmethod();
        }
    }

现在,在另一个包中的B类扩展A也可以访问相同的方法

代码语言:javascript
运行
复制
package testing;

    import test.A;

    public class B extends A{


        @Override
        protected int getmethod() {
            // TODO Auto-generated method stub
            return super.getmethod();
        }
    }

现在,在另一个包中再次扩展B的c类也可以访问它。包装试验;

代码语言:javascript
运行
复制
import testing.B;

public class c extends B{


    @Override
    protected int getmethod() {
        // TODO Auto-generated method stub
        return super.getmethod();
    }
}

因此,它可以在另一个包的子类子类中访问。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26804415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档