하위 클래스가 컴파일시에 기본 클래스에 정의 된 메서드가 아닌 public 메서드를 노출하지 못하도록하는 방법이 있습니까? 예를 들어Java : 하위 클래스가 기본 클래스와 다른 인터페이스를 제공하지 못하도록
:
아마도 내가 서브 클래스를 선언 할 AClass에서 사용할 수있는 몇 가지 키워드 만 방법이 AClass 거기 정의하여 구현 할 수있다abstract public class AClass {
abstract public void anAllowedMethod();
}
public class BClass extends Aclass {
public void anAllowedMethod() {
}
public void anAdditionalNonAllowedMethod() {
}
private void thisMethodIsAllowedBecauseItsNotPublic() {
}
}
(즉, "anAllowedMethod()".)?
왜 이렇게하고 싶은지 궁금합니다. – MatrixFrog
이러한 서브 클래스가 올바르게 사용되고 있는지 확인하십시오. 내가하고있는 프로젝트에서, 일부 개발자들은 필요하지 않은 추가 메소드를 서브 클래스에 추가하고 있습니다 (기존 인터페이스를 통해 구현할 수 있음). 그리고 파생 된 것을 모르는 경우 객체를 올바르게 사용할 수 없도록 만듭니다. 유형. "클라이언트"가 기본 클래스의 인터페이스 만 알아야한다는 것을 알면 단순화됩니다. – Joel
당신이 할 수있는 한 가지는 API를 사용하는 사람들이 BClass 유형의 변수를 선언하지 않도록 권장하는 것입니다. 'List myList = new ArrayList ()'이'ArrayList myList = new ArrayList ()'보다 나은 것으로 생각됩니다. 그래서 당신은 B 클래스를 인스턴스화하지만 변수 타입은 AClass이므로'anAdditionalNonAllowedMethod() '를 사용하지 않게 될 것입니다. –
MatrixFrog