私はJavaを初めて使い、アクセス修飾子を学んでいます。プライベートフィールドを宣言すると、getメソッドとsetメソッドを使用してフィールドを変更して読み取ることができます(別のクラスから)。親クラスではこれは当てはまりませんか?なぜなら、それはmain()でまだ変更することができるからです。Java - プライベートとラベル付けされたフィールドは、main関数でも変更できますか?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView txt = (TextView) findViewById(R.id.txt);
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Employee John = new Employee(01, "John", "Smith", 20000);
John.salary = 20;
txt.setText("ID : " + John.id + "\nName : " + John.name + "\nSalary : " + John.salary);
}
});
}
public class Employee{
int id;
String name;
String last_name;
private int salary;
public Employee(int id, String name, String last_name, int salary) {
this.id = id;
this.name = name;
this.last_name = last_name;
this.salary = salary;
}
}
}
* "ですこれは親クラスでは当てはまらないのですか? "*正しいです。また、その逆もあります。 –
ありがとう!私はちょうど私が別のクラスファイルを作成し、そこから参照した場合、それがプライベートであれば動作しないことに気づいた。 – IM2607
あなたのコード例は親クラスを表示せず、サブクラスまたはスーパークラスの 'private'フィールドの変更を表示せず、' main'メソッドも表示しません。だからあなたが頼んだことのどれもが例にはありません。それは人々があなたを助けることを少し難しくします、あなたは知っています。 –