变量'y'它是私人的,所以你不能直接从你的子类访问它。 但是你可以组织访问这个变量来创建公共方法。
所以,当你打:
subclass.show (23 , 45);
你不是直接访问到“A”级的“y”的属性,但只有在它定义的,你使用的是“Y”的公共方法。你可以做到这一点,因为它是'A'班的一种方法。
试图更好地解释:
私人修饰符让这种情况下,您的属性是从子类不入店。所以,你可以“吨这样做:
B b = new B();
b.y = 10;
因为你没有这个属性的直接访问 所以现在你可以定义如何子类可以与公共方法来访问这个私有属性最好的例子会。 getter或setter:(此方法已在超类中定义)
Public int getY(){
Return this.y;
}
Public void setY(int y){
This.y = y;
}
现在您可以访问到私人属性“Y”,但你需要现在这样调用这个公共的方法,你可以这样做:
B b = new B();
b.setY(10);
你会改变'y'的值。
现在,根据yuor代码,您没有创建任何setter或getter,但是您定义了一个方法调用'show(int,int)',您正在更改'y'的值。 这很可能作为setter方法。因为它是一个公共方法
B b = new B();
b.show(5,10);
: 这样你就可以直接访问这个方法等。在这个方法里面,你正在对一个私有属性进行操作。 所以,最后,私有属性“Y”属于“A”超,不能由任何子类是直接访问,但你可以在superclasw,你具体怎么其他类可以访问父私有属性管理界定公共方法操作。
我有这个疑问,因为因为y是一个私有变量,那么y怎么能属于对象的子类呢?
'Y' 不属于子类。正如我之前所说的,只能使用超类中定义的公共方法来访问“私有”属性。所以,如果我想改变值或显示'我'可以做到这一点,只有当超类中的公共方法改变或显示'Y'值。
void show (int o ,int e)
{
x=o ; // I mean to say ,
int y ; // Is this implicitly declared above ?
y=e ;
System.out.println(" x = " + x);
System.out.println(" y = " + y);
}
这里您不需要声明'int y;'因为这个方法是在超类中定义的,所以你可以直接访问'y'。
如果你需要更多信息,请发表评论。
的可能的复制[有什么区别字段,变量,属性,以及属性在Java中的POJO之间?](http://stackoverflow.com/questions/10115588/what-is-the-difference-between-field-variable-attribute-and-property-in-java ) –
是什么让你认为''y''属于子类? ''show''方法在''A''中定义。 – f1sh