1. 추상 클래스 (Abstract Class)

추상 클래스란?

미완성 설계도와 비슷한 의미로 미완성 메서드(추상 메서드)가 포함되어 있다는 것을 의미한다.

자바에서는 하나 이상의 추상 메서드를 포함하고 있는 클래스를 추상 클래스라고 한다.

이러한 추상 클래스는 객체 지향 프로그래밍에서 중요한 특징인 다형성을 지닌 메서드의 집합을 정의할 수 있게 한다.

추상 클래스에 정의되어 있는 추상 메서드는 추상 클래스를 상속받은 하위 클래스에서 각각의 정의가 필요하여 다양한 메서드가 만들어질 수 있다.

 

* 특징

  • 추상 클래스는 인스턴스를 생성할 수 없으며 반드시 하위 클래스에서 오버라이딩되어야만 사용할 수 있는 클래스이다.
  • 추상 메서드가 없더라도 추상 클래스로 선언할 수 있으며 추상 메서드가 존재한다는 것 외에 일반 클래스랑 동일하다.

1.1. 추상 클래스의 작성

추상 : 낱낱의 구체적 표상이나 개념에서 공통된 성질을 뽑아 이를 일반적인 개념으로 파악하는 정신 작용
추상화 : 클래스 간의 공통점을 찾아내서 공통의 상위를 만드는 작업
구체화 : 상속을 통해 클래스를 구현, 확장하는 작업

공통적인 부분을 뽑아서 추상 클래스로 만들어 상속하기도 한다.

주의할 점은 메서드는 실제 인스턴스의 메서드가 호출되며 Object 클래스로 선언하면 실제 인스턴스의 메서드가 Object에 없어 에러가 발생한다.

public abstract class Sample { // 추상 클래스
	public abstract int getAge() { // 추상 메서드
    	...
    }
}

 

2. 추상 메서드 (Abstract Method)

추상 메서드란?

선언부와 구현부 중 선언 부만 작성한 것을 의미한다. 구현 부인 {}(중괄호)를 작성하지 않고 선언부에서 ;(세미콜론)으로 선언부를 끝낸다.

// 매개변수로 special number를 받아 이름을 반환하는 메서드이다.
public abstract String getName(int sn);

주석을 통해 어떤 기능의 메서드인지 알려 상속받은 클래스에서 기능을 구현하도록 한다.

상속받은 하위 클래스에서 상위 추상 메서드를 모두 구현해야 하지만 구현하지 않은 메서드는 하위 클래스에서도 추상 메서드로 선언한다.

public abstract class Parent {
    public abstract int getAge();
    public abstract String getName();
}


public abstract class Child extends Parent {
    public int getAge() { // 추상메서드 구현
    	return 0;
    }
    
    public abstract String getName(); // 구현하지 않은 추상메서드
}

2.1. 추상 메서드 사용 목적

추상 메서드가 포함되어 있는 클래스를 하위 클래스에서 상속받았을 때 반드시 구현하도록 하기 위함이다.

모듈처럼 중복되는 부분이나 공통으로 미리 만들어 놓은 것을 사용하고, 사용하는 쪽에서 필요한 부분만 재정의하여 사용함으로써 생산성이 향상되고 배포 등이 쉬워진다.

추상 메서드가 포함되어있는 하위 클래스는 반드시 추상 메서드를 구현해야만 인스턴스를 생성할 수 있다.

'개발 언어 > Java' 카테고리의 다른 글

[Java] 내부 클래스  (0) 2021.08.27
[Java] 인터페이스  (0) 2021.08.27
[Java] 다형성  (0) 2021.08.25
[Java] 제어자  (0) 2021.08.25
[Java] Package와 import  (0) 2021.08.24

+ Recent posts