개발자 항해
추상 메서드 (Abstract Method)와 추상 클래스(Abstract Class) 본문
- 추상 메서드란?
1) 메서드 구현부(= 바디{})가 없는 메서드 (미완성 메서드)
2) 메서드의 동작을 기술하는 구현부가 없는 추상메서드는 실행할 수 있는 코드가 없으므로 외부로부터
호출하면 안된다.
=> 따라서, 추상 메서드를 갖는 클래스는 반드시 추상클래스로 선언되어야 한다.
3) 메서드 정의시 선언부의 접근제한자 뒤에 abstract 키워드를 붙여 정의
=> abstract 키워드가 붙은 메서드는 추상메서드이므로 바디{}를 가질수 없다.
(따라서, 메서드 선언부 마지막에 바디{} 대신 세미콜론(;)으로 끝냄)
4) 서브클래스에서 반드시 오버라이딩 하도록 강제성을 부여해야하는 메서드는
슈퍼클래스에서 추상메서드로 선언하면 서브 클래스가 무조건 오버라이딩 필수다.
=> 강제성을 통해 업캐스팅 시 코드의 통일성을 더욱 향상 시킬수 있다.
< 추상 메서드 정의 기본 문법 >
[접근제한자] abstract [리턴타입] 메서드명([매개변수...]);
- 추상 클래스란?
1) 객체를 생성할 수 없는 클래스(미완성 클래스)
=> 따라서, new 연산자를 통해 생성자 호출 불가능
2) 추상메서드를 가질 수 있는 클래스
=> 상속받는 서브클래스에서 반드시 오버라이딩 되어야한다.
3) 추상클래스는 추상메서드, 일반 메서드, 생성자, 멤버
변수를 모두 가질수 있다.
4) 상속을 통해 서브클래스에서 사용 가능하며, 업캐스팅을 통한 다형성 활용이 가능하다.
5) 구현의 강제성 부여를 통해 코드의 통일성이 향상된다. (일부 메서드에 대한 구현의 강제)
<추상 클래스 정의 기본 문법 >
abstract class 클래스명 {
멤버변수(인스턴스 멤버, 클래스(static)멤버)
생성자
메서드}
- 추상메서드에 바디를 정의할 경우 오류남
- 추상클래스와 메서드를 정의하고
인스턴스를 생성해보았다.
'Programming > Java' 카테고리의 다른 글
인터페이스(interface) - 2 (0) | 2022.07.29 |
---|---|
인터페이스(interface) - 1 (0) | 2022.07.29 |
싱글톤(singleton) (0) | 2022.07.22 |
오버로딩과 오버라이딩 차이점 (0) | 2022.06.28 |
상속(Inheritance) (0) | 2022.06.24 |