Java 为什么我可以访问b的值,即使它在子类中设置为private?
输出为20。引用类型为b的对象的b如何才能正确访问私有成员 您仍然可以从Java 为什么我可以访问b的值,即使它在子类中设置为private?,java,Java,输出为20。引用类型为b的对象的b如何才能正确访问私有成员 您仍然可以从B类中直接访问它,即使它是私有的。由于main方法位于那里,因此可以访问私有变量 A类中的变量b被b类中的变量b隐藏,除非您这样声明,否则无法访问该变量: public class A { protected int b = 16; } public class B extends A{ private int b=20; public static void main(String[] arg
B
类中直接访问它,即使它是私有的
。由于main
方法位于那里,因此可以访问私有变量
A
类中的变量b
被b
类中的变量b
隐藏,除非您这样声明,否则无法访问该变量:
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);
}
}
这将打印
16
您仍然可以从B
类中直接访问它,即使它是私有的
。由于main
方法位于那里,因此可以访问私有变量
A
类中的变量b
被b
类中的变量b
隐藏,除非您这样声明,否则无法访问该变量:
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);
}
}
这将打印
16
静态
类中的方法可以访问包含类的所有私有
成员
由于您的
main
是类B
的一部分,因此它可以查看所有成员。类中的静态方法可以访问包含类的所有私有成员
由于您的main
是类B
的一部分,因此它可以查看所有成员。您在类B中获得B的值。B可以访问自己的私有成员。您在类B中获得B的值。B可以访问自己的私有成员。您在当前以上类别B
。B有权访问所有it成员的BARIABLE,无论它们是如何声明的
由于A.b
受保护但可供调用类使用,因此可以通过向上转换来访问:
A ab = new B();
System.out.println(ab.b);
您正在访问上面当前类b
中的类成员变量b
。B有权访问所有it成员的BARIABLE,无论它们是如何声明的
由于A.b
受保护但可供调用类使用,因此可以通过向上转换来访问:
A ab = new B();
System.out.println(ab.b);
因为main()
是B
类的成员,所以它可以访问private
成员。因为main()
是B
类的成员,所以它可以访问private
成员。这是一个很好的例子,说明了为什么应该使用getter(和setter)访问成员。@Paranaix为什么?相反,getter和setter并不能阻止这一点。从概念上讲,一个名为“b”的属性不应该在同一类层次结构中声明两次。如果在名为Entity的类和名为Person的实体子类中声明名为“name”的属性,这是一个很好的例子,说明了为什么应该使用getter(和setter)访问成员。@Paranaix怎么会这样?相反,getter和setter并不能阻止这一点。从概念上讲,一个名为“b”的属性不应该在同一类层次结构中声明两次。如果在名为Entity的类和名为Person的实体子类中声明名为“name”的属性,则情况也是如此。