HttpServlet 클래스에 대한 의문점은 클래스에 추상 메서드가 없더라도 추상 클래스라는 것입니다. 모든 메서드가 구체적입니다. 추상 메서드가없는 경우에도 클래스가 추상 클래스가 될 수 있습니까? 그렇다면 사용법은 무엇입니까? 당신이 그것을 사용하기 위해 그것들을 하위 클래스 그래서추상 메서드가없는 경우에도 클래스를 추상 클래스로 만들 수 있습니까? 그렇다면 사용법은 무엇입니까?
감사
HttpServlet 클래스에 대한 의문점은 클래스에 추상 메서드가 없더라도 추상 클래스라는 것입니다. 모든 메서드가 구체적입니다. 추상 메서드가없는 경우에도 클래스가 추상 클래스가 될 수 있습니까? 그렇다면 사용법은 무엇입니까? 당신이 그것을 사용하기 위해 그것들을 하위 클래스 그래서추상 메서드가없는 경우에도 클래스를 추상 클래스로 만들 수 있습니까? 그렇다면 사용법은 무엇입니까?
감사
HttpServlet
의 경우 서블릿 프로그래머는 일반적으로 servlet 프로그래머가 기본 HTTP 메소드 (POST, GET, PUT, DELETE) 중 4 개를 모두 지원하지 않기를 원하므로 요점은 doGet()
, doPost()
등의 메소드는 추상적인데, 프로그래머는 필요없는 메소드를 구현해야하기 때문이다. 따라서 HttpServlet
은 오류 상태 코드를 클라이언트에 반환하는 것을 제외하고는 아무 것도 수행하지 않는 모든 메서드에 대해 기본 구현을 제공합니다. 프로그래머는 필요한 방법을 무시하고 나머지는 걱정하지 않아도됩니다. 그러나 실제로는 HttpServlet
클래스 자체를 사용하면 아무런 의미가 없으므로 (유용하지 않으므로) abstract
입니다.
그리고 거기에는 추상적 인 방법이없는 추상 클래스가있는 것이 좋은 때를위한 훌륭한 예가 있습니다.
정말 좋은 예입니다. 그런데 Template Method 패턴이라고도 부릅니다. – BalusC
하나는 추상 클래스를 인스턴스화 할 수 없습니다.
하위 클래스에서는 여전히 고유 한 메서드를 구현하거나 부모 메서드를 재정의 할 수 있습니다.
HttpServlet
을 독립 실행 형으로 사용하는 것이 좋지 않을 수도 있지만 특정 환경에서 필요한 기본 기능을 제공 할 수 있습니다. 이 컨텍스트를 제공하고 해당 기능에 액세스하려면 HttpServlet
의 하위 클래스로 지정할 수 있습니다.
서브 클래스 HttpServlet
은 자체 기능을 작동시키기 위해 메소드를 구현할 필요가 없습니다.
의도적 인 문제입니다. 클래스가 추상 클래스 인 경우 해당 클래스의 인스턴스 (하위 클래스 만)를 만들 수 없습니다.
저는 Java에 강하지 않지만, HttpServlet은 메소드의 기본 구현을 제공하지만, 일부는 무시할 것으로 예상됩니다. 그 클래스의 불특정화 된 인스턴스를 갖는 것은 거의 의미가 없기 때문에 컴파일러는 추상이므로 시도하는 사람에게 힌트를 떨어 뜨립니다.
+1,'HttpServlet' 방법의 디폴트 행동은 * very * boring web로 이끌 것입니다 pages ... –
분명히 http://www.cavaliers.org/john/boring.html만큼 지루하지 않습니까? – Steve314
모든 메서드에 대한 구체적인 구현이있는 경우에도 클래스를 추상으로 표시하면 클래스 디자인이 완료되었는지 또는 나중에 일부 메서드를 추가 할 가능성이 있는지 확실하지 않은 경우에 유용합니다. 추상적으로 선언되지 않은 클래스를 나중에 추상적으로 변경하면 기존 바이너리와의 호환성이 깨지지 않습니다.
또한보십시오 http://stackoverflow.com/questions/362446/abstract-class-with-all-concrete-methods –