저는 추상 메소드를 정의하는 추상 클래스 A를 가지고 있습니다. 이것은 클래스가 인스턴스화 될 수 있으려면 모든 추상 메소드가 구현되어야 함을 의미합니다.어떻게 생성자를 abstract 클래스의 모든 서브 클래스에 강제적으로 정의 할 수 있습니까?
모든 하위 클래스에서 매개 변수로 2 개의 int를 사용하여 생성자를 구현하고 싶습니다.
생성자 선언은 하위 클래스에 정의 된 생성자를 원하며 구현에 대해 알지 못하기 때문에 내 용도를 무효화합니다. 게다가 나는 추상적 인 것으로 생성자를 선언 할 수 없다.
이 방법이 있습니까? 내가 원하는 것을
예 :
수 있습니다 내가 Matrix 클래스의 API를 정의하고 있다고 말한다. 내 문제는 매트릭스가 차원을 바꿀 수 없다는 것입니다.
매트릭스를 만들려면 그 크기를 제공해야합니다.
따라서 모든 구현 자들이 생성자에게 크기를 매개 변수로 제공하기를 원합니다. 이 생성자는 구현 문제가 아니라 문제에 의해 동기 부여됩니다. 구현은 메소드의 모든 의미가 유지된다면 원하는대로 할 수 있습니다.
내 추상 클래스에서 invert()
메소드의 기본 구현을 제공하고자한다고 가정 해 보겠습니다. 이 메서드는 반전 된 치수가 this
인 새 행렬을 만듭니다. 보다 구체적으로는, abstract 클래스에서 정의되고있는 것처럼, 2 개의 int를 취하는 생성자를 사용해, 같은 클래스의 새로운 인스턴스를 작성합니다 (this
). 인스턴스를 알지 못하기 때문에 리플렉션 (getDefinedConstructor)을 사용할 것이고 나는 그것을 얻고 구현을위한 의미있는 것이라고 waranty에게 원한다.
우아한 해결책은 다음에서 찾을 수 있습니다. http://stackoverflow.com/questions/6028526/java-force-an-extending-class –