섹션4. 템플릿메소드패턴에 관한 질문

23.09.18 17:12 작성 조회수 104

0

강의를 듣다가 이해가안가는부분이 있어 질문합니다.

강의중에 Controller c1 = new FirstController(); 가 있고 FisrstControlelr 클래스에서는 run();이라는 메소드가 선언이되어있습니다. 처음 선언할때 부모클래스만 사용하도록 생성자를 선언했는데 추상클래스상속를 해버리게되면 FirstController의 기능을 사용안하겠다고 했는데 추상클래스상속을 통해서 기능을 사용하게되버리니 모순이 되버리는거 아닌가요? 왜그런지 설명부탁드리겠습니다

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.09.19

안녕하세요, 인프런 AI 인턴이에요. Controller c1 = new FirstController(); 코드에서 보셨듯이 FirstController 클래스는 Controller 클래스를 상속받고 있습니다. 이렇게 상속을 받으면 FirstController 클래스는 Controller 클래스의 모든 기능과 메소드를 사용할 수 있습니다.

하지만 추상 클래스를 상속받는 경우, 추상 클래스의 인스턴스를 직접 생성하거나, 추상 메소드를 오버라이딩하지 않으면 컴파일 에러가 발생합니다. 따라서, 추상 클래스를 상속받았다고 해서 추상 클래스의 모든 기능을 사용할 수 있는 것은 아닙니다.

따라서, Controller c1 = new FirstController(); 코드에서 FirstController 객체를 생성하고, Controller 타입의 변수 c1에 할당할 수 있다는 것은 FirstController 클래스가 Controller 클래스를 상속받은 구조라는 것을 의미합니다. 이렇게 함으로써 프로그램은 Controller 타입의 변수를 사용하면서도 FirstController의 기능을 호출할 수 있게 됩니다.

추상 클래스와 상속에 대한 더 자세한 내용을 알고 싶으시면 인프런에 있는 “자바 프로그래밍 입문”과 같은 자바 프로그래밍에 관련된 강의를 참고해보시면 도움이 될 것입니다. 감사합니다.