SeatPlan
クラスの保護されたフィールドにアクセスし、その値をClassroom
クラスから変更することができます。他のクラスの保護フィールドへのアクセス
これは正常ですか?保護されたフィールドにはそのサブクラスのみでアクセスできますか?それ以外の場合は、private
フィールドに変更する必要がありますか?
のは、私はprotected
分野でabstract
クラスがあるとしましょう:
public abstract class SeatPlan {
protected int rowNum;
protected int columnNum;
public abstract void method();
}
そして、それは子クラスがあります。
public class ASeatPlan extends SeatPlan {
public ASeatPlan(){ // constructor
this.rowNum= 10;
this.columnNum = 7;
}
// omitted code
}
public class BSeatPlan extends SeatPlan {
public BSeatPlan(){ // constructor
this.rowNum= 7;
this.columnNum = 15;
}
// omitted code
}
クラスRoom
をSeatPlan
オブジェクトのprivate
フィールドが含まれています
public class Room {
private SeatPlan seatPlan;
public Room(SeatPlan seatPlan){ // constructor
this.seatPlan = seatPlan;
}
public SeatPlan getSeatPlan(){ // getter method
return seatPlan;
}
//omitted code
}
public class Classroom {
public SeatPlan doSomething(Room room){
SeatPlan seats = Room.getSeatPlan();
seats.rowNum = 99999; <--------------- accidentally change the value ------
//omitted code
}
可能な複製(http://stackoverflow.com/questions/215497/difference-among -public-default-protected-and-private) – Savior
アクセス修飾子を理解する必要があります。 簡単なチュートリアルはここにあります:http://www.tutorialspoint.com/java/java_modifier_types.htm あなたのコードのための簡単な解決策は、すべての人のために修飾子を使用する方法を知る必要があるので、単一のJavaプロジェクト。 – goncalopinto