変数あなたはサブクラスから直接アクセスすることはできませんので、「y」はそれがプライベートです。 しかし、あなたはpublicメソッドを作成し、この変数へのアクセスを整理することができます。だから、
あなたが呼んでいる:
subclass.show (23 , 45);
あなたは「Y」「A」クラスの属性だけ、あなたが「Y」を使用しているどこに定義されている公共の方法に直接アクセスしていません。それは 'A'クラスのメソッドなのでできます。
は、より良い説明しよう:
private修飾子は、このケースであなたの属性は、サブクラスからづけしていないとします。この属性に直接アクセスすることはできませんので
B b = new B();
b.y = 10;
をだから今は、サブクラスがパブリックメソッドで、このプライベート属性にアクセスする方法を定義することができる最良の例は次のようになります。だから、 "tがこれを行うことができます。ゲッターやセッター:(この方法は、あなたのスーパークラスで定義する必要が)
Public int getY(){
Return this.y;
}
Public void setY(int y){
This.y = y;
}
今、あなたはプライベート属性「Y」にアクセスできますが、あなたは今、あなたが行うことができます。このパブリックメソッドを呼び出す必要があります:
B b = new B();
b.setY(10);
そして、あなたは「Y」の値を変更します。
yuorコードによれば、セッターやゲッターは作成されていませんが、 'y'の値を変更する場合は、メソッド呼び出し 'show(int、int)'を定義しました。 これはセッターメソッドとして動作する可能性があります。それは公共の方法だからです
B b = new B();
b.show(5,10);
: は、だから、この方法のように直接アクセスすることができます。このメソッドの内部では、private属性の操作を行っています。 最後に、プライベート属性 'y'は 'A'スーパークラスに属し、どのサブクラスからも直接アクセスすることはできませんが、他のクラスがスーパークラスプライベート属性にアクセスする方法を指定するsuperclaswでパブリックメソッドを定義する操作を管理できます。
yはプライベート変数なので、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);
}
Y 'をint型;'このメソッドはスーパークラスで定義されているため、 'y'に直接アクセスできます。
もっと必要な場合はコメントしてください。
[フィールド、変数、属性、およびJava POJOのプロパティの間?](http://stackoverflow.com/questions/10115588/what-is-the-difference-between-field-variable-attribute-and-property-in-java ) –
'' y''がサブクラスに属していると思いますか? '' show''メソッドは '' A''で定義されています。 – f1sh