为什么我可以访问b的值,即使它在子类中设置为private?

时间:2012-08-18 21:00:16

标签: java

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不能正确访问私有成员?

5 个答案:

答案 0 :(得分:2)

类中的

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

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

答案 1 :(得分:2)

您在B级获得b的值.B可以访问自己的私人成员。

答案 2 :(得分:1)

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

b类中的变量Ab类中的变量B隐藏,除非您将其声明为:< / p>

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

这将打印16

答案 3 :(得分:0)

您正在访问上面当前班级b中的班级成员变量B。无论如何宣布,B都可以访问所有成员的障碍。

由于A.b受保护但可供调用类使用,因此您可以通过向上转发来访问它:

System.out.println(((A)b).b);

答案 4 :(得分:0)

由于main()B类的成员,因此可以访问private个成员。