나는 추상적 인 Font
클래스를 만들고 있는데, 하위 클래스가 하나의 int
매개 변수 (글꼴 크기)를 사용하는 생성자를 선언하도록하고 싶습니다. 나는 다음과 같이 그렇게 노력했다. 추상 생성자가 허용되지 않는 이유는 무엇입니까?
public abstract class Font {
...
public abstract Font(int size);
...
}
하지만 내 컴파일러가 선언
Error:(20, 19) java: <path omitted>/Font.java:20: modifier abstract not allowed here
이 정확히 세상의 끝이 아니다 - 이것은 그냥 구현하기 위해 기억 저를 강제로 자바 컴파일러를 원, 꼭 필요한 것은 그 생성자. 나는 이것이 왜 허용되지 않는지 궁금하다.
이 기능은 좋은 생각이 아닌 것 같아. 어떤 유용한 값으로 초기화되어야하는 다른 private 필드'f'를 정의하는 구체적인 클래스가 있다고 가정하십시오. 그래서 모든 구체적인 클래스 생성자는'f'에 저장할 값을 가져야합니다. 당신의 생성자 중 어떤 것도'(int size)'프로파일을 가지고 있지 않기 때문에 정말로 컴파일러가 불평 할까? – ajb
생성자를 재정의 할 수 없습니다 (항상 콘크리트 유형에 대해 가상이 아닙니다). 왜이 기능이 존재하지 않는지에 관해서 - 잘, 만약 그렇다면 그것은 다른 언어가 될 것입니다. – user2864740