추상 클래스 abstract class
- 추상 메소드를 가지고 있는 클래스는 추상 클래스로 선언해 줘야 한다.
- 자바에서 추상 메서드는 abstract 예약어를 사용하여 선언하는 메서드
- 추상 클래스를 상속 받으면 구현되지 않은 추상 클래스를 구현하거나, 상속 받은 클래스도 추상 클래스로 만들어야 한다. 추상 메소드를 하나라도 가지고 있으면 추상클래스가 되어야 하기 때문.
- 문법상으로 모든 메서드를 구현했더라도 abstract 예약어를 사용하면 추상 클래스이다. 생성해서 사용할 목적이 아니라 상속만을 위해 만든 추상 클래스로, 이러한 추상 클래스는 모든 메서드가 구현되어 있더라도, new 예약어를 통해 인스턴스를 생성할 수 없다.
- 추상클래스에서 구현된 메서드는 하위클래스에서 공통으로 사용할 구현 코드이며, 하위 클래스에서 재정의 할 수 있다. 추상 메서드는 하위 클래스가 어떤 클래스냐에 따라 구현코드가 달라진다.
ㅇ 추상클래스 특징
- 추상 클래스는 인스턴스로 생성할 수 없다.
- 추상 클래스는 상속을 하기 위해 만든 클래스, 하위 클래스가 어떤 클래스 인지에 따라 구현 코드가 달라지는 경우 사용
ㅇ 추상클래스 사용 이유
- 추상클래스는 현재는 내용을 구체화 할수 없지만, 상속 받는 자식클래스에서 내용을 구체화 하도록 하기 위해서 사용하는 경우에 쓴다.
- 반드시 자식 클래스에서 재 정의하도록 강제화 하기 위해
- 자식 클래스에서 꼭 구현해야 하는 메소드이며, 각 자식 클래스마다 구현 방법이 다른 경우에도 추상클래스를 활용
ㅇ 추상 메소드 문법
- abstract 리턴값 메소드명( [자료형 매개변수1, 자료형 매개변수2...] );
- abstract String print(String a, String b)
- 참고로 { }만 있어도 추상메소드가 아니다. 구현부의 내용의 없을 뿐이다.
- String print(String a, String b){ }
이런 메소드는 추상 메소드가 아니다. { }를 사용한 것만으로 메서드를 구현한 것. 내용이 없는 것
- String print(String a, String b){ }
[참고] 템플릿 메서드
- 템플릿 메서드는 디자인 패턴의 한 방법으로 모든 객체 지향 프로그램에서 사용하는 구현 방법
- 템플릿 메서의 역할은 메서드 실행 순서와 시나리오를 정의하는 것으로 로직 흐름이 이미 정해져 있는 프레임워크에서 많이 사용하는 기본 구현 방법
반응형
'Java | spring > 자바 객체지향' 카테고리의 다른 글
Java Interface 인터페이스 개념잡기! (0) | 2019.05.07 |
---|---|
Java 프로그래밍 기본, 메소드 method (0) | 2019.05.07 |
Java Class 구조, 접근명시자(static, public) (0) | 2019.05.07 |
상속과 다형성, 오버라이딩?! 오버로딩?! (0) | 2019.05.07 |
객체지향과 절차지향 프로그래밍?! (0) | 2019.05.06 |
댓글