0
public class A {

protected int b = 16;

}


public class B extends A{

    private int b=20;


    public static void main(String[] args)
    {
        B b = new B();
        System.out.println(b.b);
    }

}

输出为 20。 引用类型 B 的对象的 b 怎么可能不能正确访问私有成员?

4

5 回答 5

2

static类中的方法可以访问private包含类的所有成员。

由于您main是班级的一部分,B因此可以看到所有成员。

于 2012-08-18T21:01:58.163 回答
2

您在 B 类中获得 b 的值。B 可以访问它自己的私有成员。

于 2012-08-18T21:02:40.200 回答
1

你仍然可以直接从B类内部访问它,即使它是private. 由于该main方法位于那里,因此可以访问私有变量。

类中的变量b被类中A的变量隐藏,除非您像这样声明它,否则无法访问:bB

A ab = new B();
System.out.println(ab.b);

这将打印16.

于 2012-08-18T21:01:12.697 回答
0

b您正在访问上面当前类中的类成员变量B。B 可以访问所有它的成员变量,无论它们是如何声明的。

因为A.b受保护但对调用类可用,您可以通过向上转换来访问它:

System.out.println(((A)b).b);
于 2012-08-18T21:03:27.660 回答
0

因为main()B类的成员,所以可以访问private成员。

于 2012-08-18T21:18:39.363 回答