2 u013179958 u013179958 于 2017.01.13 15:06 提问

对于Java的权限访问修饰符的一些疑问!

我在A中定义个4个变量,权限修饰符,分别是public,private,protected,默认

我为什么无法通过b包中的C(已经继承了A),来获取a包中的A的protected的属性?

https://my.oschina.net/u/1169535/blog/403589

 package a;

public class A {

    public String id;
    private String name;
    protected String time;
    String flg;

}
 package a;

import org.junit.Test;

public class B {

    @Test
    public void f1(){
        A a = new A();
        String flg = a.flg;
    }
}

 package b;

import org.junit.Test;

import a.A;

public class C extends A{
    @Test
    public void f1(){
        A a = new A();
        String id = a.id;
    }
}

2个回答

u010434246
u010434246   2017.01.13 15:35
已采纳

楼主:protected的作用是只供子类可以访问的

在C中去new A的对象,因为不在同一个包里面,所以不能访问的是A的protected 属性。 因为C继承了A ,所以C是继承A的protected属性的, 你可以在C类使用C类的属性(继承与A类protected属性。)

u013179958
u013179958 OK了
11 个月之前 回复
Smile_IT_life
Smile_IT_life   2017.01.13 15:11

你是新手吧,子类只能访问基类的public类型变量

qq_37331167
qq_37331167 回复据说名字太长不容易被发现: protected只能是在同包内使用,他的作用就是对外界的包进行封装,自己其他的类就能查询到此变量或者方法
11 个月之前 回复
viewgroup
viewgroup 回复据说名字太长不容易被发现: protected的作用是保护这个属性或者方法不被外来类使用。
11 个月之前 回复
u013179958
u013179958 我看网上都是这么说的
11 个月之前 回复
u013179958
u013179958 protected,保护修饰符,本包or子类可以访问
11 个月之前 回复
u013179958
u013179958 那protected的作用是什么?
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!