추상 클래스

2020. 6. 25. 10:49정리/JAVA


추상 클래스란?

 

하위 클래스에서 구현될 추상적인 기능이 포함된 클래스이다.

즉 추상 클래스에서는 메소드 시그니처만을 제공하고 실제 구현은 하위 클래스에서 이루어진다.

 

추상 클래스의 특징으로는

  • 추상 클래스이지만 추상 메소드를 가지지 않을 수 있다.
  • 추상 메소드를 하나라도 가진 경우 해당 클래스는 무조건 추상 클래스로 선언해야 한다.
  • 그 자체로 인스턴스 생성이 불가능하다.
  • 상속을 통해 사용 가능하며, 다중 상속은 불가능하다.
  • 추상 메소드를 제외한 나머지 접근 제어자 및 필드는 일반적인 클래스와 동일하게 사용할 수 있다.
  • 클래스 앞에 abstract 키워드를 붙여서 정의한다.

가 있다. 

 

다음으로 추상 클래스를 예제를 통해 이해해보도록 했다.


추상 클래스 문법

 

public abstract class A {
	public String fieldA = "A class - fieldA";
	public String fieldB = "A class - fieldB";
	
	public void normalMethod() {
		System.out.println("일반 메소드");
	}
	
	public abstract void abstractMethod();
	
}

 

public class Aextends extends A {
	public String fieldA = "Aextends class - fieldA";

	@Override
	public void abstractMethod() {
		System.out.println("추상 메소드 오버라이딩");
	}

}

 

public class Test {
	public static void main(String[] args) {
		Aextends a = new Aextends();
		
		System.out.println(a.fieldA);
		System.out.println(a.fieldB);
		
		a.normalMethod();
		a.abstractMethod();
	}
}

 

간단히 추상 클래스 A, 추상 클래스를 상속한 클래스 Aextends 가 있다고 할 때

Test라는 클래스로 테스트를 하면

 

Aextends class - fieldA
A class - fieldB
일반 메소드
추상 메소드 오버라이딩

다음과 같은 출력을 확인할 수 있다.

 

이를 통해 추상 클래스는 일반적인 상속 관계의 클래스와 유사하며, 필요할 경우 특정 메소드를 추상 메소드로 만들어 이 메소드만을 하위 클래스에서 새롭게 정의해서 사용할 수 있도록 하는 역할이라는 것을 확인할 수 있었다.

 

 


추상화의 경우 인터페이스와 유사하기 때문에 간단히 문법에 대해서만 정리했고,

나머지 내용은 인터페이스와 추상화의 공통점 / 차이점을 알아볼 때에 조금 더 자세히 정리할 생각이다.

 


해당 글은 개인이 공부하면서 정리한 글이기 때문에 정확하지 않은 내용이 있을 수 있습니다.

'정리 > JAVA' 카테고리의 다른 글

객체 지향 설계 5원칙 - SOLID  (0) 2020.06.29
인터페이스와 추상클래스  (0) 2020.06.26
인터페이스  (0) 2020.06.02
다형성  (0) 2020.05.27
상속  (0) 2020.05.25