관련 없는 두 클래스에 동일한 이름의 변수가 있는 것은 상관없습니다. 하지만 같은 계보에 있는 두 클래스에 같은 일이 벌어질 경우, 다행히도 잠깐 헷갈리는 정도일 수도 있지만 최악의 경우에는 치명적인 버그를 야기합니다.
규칙을 어긴 코드
public class Fruit {
protected Season ripe;
protected Color flesh;
// ...
}
public class Raspberry extends Fruit {
private boolean ripe; // 규칙을 어긴 코드
private static Color FLESH; // 규칙을 어긴 코드
}
규칙을 준수한 해결책
public class Fruit {
protected Season ripe;
protected Color flesh;
// ...
}
public class Raspberry extends Fruit {
private boolean ripened;
private static Color FLESH_COLOR;
}
예외
이 규칙은 부모 클래스와 자식 클래스에 있는 동일한 이름 필드가 static이면 무시됩니다. 더불어 이 규칙은 부모 클래스에 있는 필드가 private 이면 무시됩니다. 그래도 이외의 케이스에서는 자식 클래스에 있는 필드 이름을 변경해야 합니다.
public class Fruit {
private Season ripe;
// ...
}
public class Raspberry extends Fruit {
private Season ripe; // Parent에 있는 ripe이 Raspberry에서는 어찌되었든 보이지 않으니 허용됩니다.
// ...
}
If you like SONARKUBE, don’t forget to give me a star.