访问控制修饰符

已知A类被打包在packageA,B类被打包在packageB,且B类被声明为public,且有一个成员变量x被声明为protected控制方式。C类也位于packageA包,且继承了B类。则以下说法正确的是()  C

A、A类的实例不能访问到B类的实例

B、A类的实例能够访问到B类一个实例的x成员

C、C类的实例可以访问到B类一个实例的x成员

D、C类的实例不能访问到B类的实例

定义两个包

包2中有public修饰的类B。其有protected的成员。

package packgeDemo2;
public class B {
    protected String x = "B类的protected成员";
    public void show() {
        System.out.println("正在访问B类实例");
    }
}

 包1中有类A,以及继承自类B的类C。

package packgeDemo1;

import packgeDemo2.B;

class A {
    B b = new B();
    //String xx = x;
    //String xx = b.x;//A类的实例不能访问到B类的一个实例的x成员
}
class C extends packgeDemo2.B {
    B b = new B();
    String xx = super.x;
    String xxx = x;
}
public class packgeDemo1 {
    public static void main(String[] args) {
        A a = new A();
        C c = new C();
        a.b.show();//A类的实例可以访问到B类的实例 只需要导入B类所在的包(B类是public
        c.b.show();//C类的实例可以访问到B类的实例 只需要导入B类所在的包(B类是public

        //a.b.x //A类的实例不能访问B类的一个实例的x成员 原因是这个x是protected的

        //C类的实例可以!访问到B类的一个实例的x成员(通过super或者不用super(因为protected子类可以访问到
        System.out.println(c.xx);
        System.out.println(c.xxx);
    }
}

有以下结果。

A类的实例可以访问到B类的实例 只需要导入B类所在的包(B类是public

C类的实例可以访问到B类的实例 只需要导入B类所在的包(B类是public

 A类的实例不能访问B类的一个实例的x成员 原因是这个x是protected的

C类的实例可以!访问到B类的一个实例的x成员(通过super或者不用super(因为protected子类可以访问到

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值