2010-12-21 8 views
2

나는 두 가지 메소드를 구현하지만 다른 메소드는 구현하지 않는 추상 자바 클래스를 가지고 있습니다. 구현하는 메소드에서 private 속성 변수를 사용합니다. 사용 된 변수는 하위 클래스에서도 사용해야합니다. 내가보기로서브 클래스는 추상 수퍼 클래스의 private 속성에 대한 액세스가 필요합니다.

내 옵션은 다음과 같습니다

  • 현재 서브 클래스에 추상 클래스에서 구현 방법의 구현을 연기 서브 클래스와 슈퍼 클래스
  • 모두에서 개인 변수를 선언

다른 옵션이 있습니까? 이것들 중 어느 것이 더 합리적이고 왜 그런가?

답변

2

문제는 상태를 유지하는 방법입니다. 값이 저장되는 곳이 걱정되지 않으면 private 회원을 다른 사람의 "상단"에 추가하여 그 대신에 사용하십시오. 슈퍼 클래스. 수퍼 클래스의 메소드와 서브 클래스의 일부 메소드가 동일한 상태에 액세스하도록하려면 가시성을 변경해야합니다.

변수를 protected으로 선언하여 서브 클래스에서 액세스 가능하게하거나 접근자를 구현할 수 있습니다 메서드를 사용하거나 심지어 public으로 만들 수 있습니다.

+0

변수의 상태를 유지해야하기 때문에 더 의미가 있습니다. 감사 –

1

추상 클래스는 개인 필드에 액세스 할 필요가 없도록 설계 되었기를 바랍니다. 두 가지 방법 중 어느 것을 사용할 것인지는 추상 클래스와 하위 클래스가 무엇이고 그들이 무엇을해야하는지에 달려 있습니다.

이 변수에 대한 읽기 액세스 만 필요하고 수퍼 클래스 메서드가이 변수를 수정하지 않으면 동일한 이름/형식의 다른 (완전히 다른) 개인 필드를 하위 클래스에 추가하면됩니다. 필드를 변경하여 수퍼 클래스 메서드의 비헤이비어를 수정하려는 경우 대신 메서드를 재정의해야합니다.

관련 문제