본문 바로가기

BackEnd/Java

추상화 (Abstract)

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