1. 추상 메서드
- 메서드 구현부(Body)가 없는 메서드 (실행할 코드가 없는 메서드)
- 선언부 리턴 타입 앞 abstract 키워드 명시
- 이렇게 추상 메서드로 정의가 된 메서드를 포함하는 클래스는 반드시 추상클래스로 정의해야 함
기본 문법
[접근제한자] abstract 리턴타입 메서드명([파라미터...]);
2. 추상 클래스
- 인스턴스를 생성할 수 없는 클래스
- 클래스 내에 추상 메서드가 하나라도 존재할 경우 반드시 추상 클래스로 선언
- 서브 클래스는 반드시 추상 메서드를 구현(implements)해야 함 = 오버라이딩 방법과 동일
기본 문법
[접근제한자] abstract class 클래스명 {
// 멤버변수, 상수
// 일반메서드, 추상메서드
}
abstract class AbstractClass4 { // 추상메서드를 포함하므로 추상클래스로 정의
public void normalMethod() {
System.out.println("슈퍼클래스의 일반메서드!");
}
// 추상메서드 abstractMethod() 정의
public abstract void abstractMethod();
}
abstract class MiddleAbstractClass4 extends AbstractClass4 {
// 상속받은 추상메서드를 구현하지 않을 경우, 현재 클래스도 추상클래스로 선언해야한다!
public void normalMethod2() {
System.out.println("중간 서브클래스의 일반메서드!");
}
}
// 최종적으로 서브클래스 중 누군가가 추상메서드를 구현해야 사용 가능하다!
class SubAbstractClass4 extends MiddleAbstractClass4 {
@Override
public void abstractMethod() {
System.out.println("서브클래스에서 구현한 추상메서드!");
}
}
'BackEnd > Java' 카테고리의 다른 글
enum (데이터 열거형 타입) (1) | 2020.03.23 |
---|---|
향상된 for문 (for each문) (0) | 2020.03.23 |
상수 (final) (0) | 2020.03.16 |
동적바인딩과 다형성(polymorphism) (0) | 2020.03.16 |
같은 참조 타입인지 확인하는 instanceof 연산자 (0) | 2020.03.16 |