추상 클래스 

클래스는 일반 클래스와 추상 클래스로 나뉘는데 추상 클래스는 클래스 구현부 내부에 추상 메서드가 하나 이상 포함되거나 클래스가 abstract로 정의된 경우를 말합니다. 추상 메서드가 있다면 이를 상속한 자식 클래스에서 부모의 추상 메서드를 반드시 완성해야 합니다. 상속을 위한 클래스이기 때문에 따로 인스턴스화 할 수 없습니다.

일반 메서드를 선언하고 구현하면 이를 상속한 자손 클래스에서 따로 재정의할 필요없이 일반 메서드를 가져다 쓸 수 있습니다.

abstract class 클래스이름 {
	...
    public abstract void 메서드이름();
}

인터페이스

인터페이스는 추상클래스처럼 다른 클래스를 작성하는데 도움을 주는 목적으로 작성하고 클래스와 다르게 다중상속(구현)이 가능합니다.

interface 인터페이스 이름{
	public static final 상수이름 = 값;
    public void 메서드이름();
}

 

 

추상클래스와 인터페이스의 공통점과 차이점

공통점

  • 둘다 추상 메서드를 가지고 있어 상속 or 구현 받아 재정의 해야합니다.

차이점

  • 추상클래스 : IS - A 관계일때 사용 -> ~는 ~이다.
  • 인터페이스 : HAS - A 관계일때 사용 -> ~는 ~를 할 수 있다.

 

만약 모든 클래스가 인터페이스를 사용해서 기본 틀을 구성한다면 공통으로 필요한 기능들도 모든 클래스에서 재정의해야하는 번거로움이 있습니다. 이렇게 공통된 기능이 필요하다면 추상 클래스를 이용하여 일반 메서드를 작성하여 자식 클래스에서 사용할 수 있도록 하면 됩니다. 그러나 자바는 하나의 클래스만 상속이 가능하기때문에 만약 각각 다른 추상클래스를 상속하고 있지만 공통된 기능이 필요하다면 해당 기능을 인터페이스로 작성해서 구현해야 합니다.

 

참고 :[JAVA] 추상클래스 VS 인터페이스 왜 사용할까? 차이점, 예제로 확인 :: 마이자몽 (tistory.com) 

 

[JAVA] 추상클래스 VS 인터페이스 왜 사용할까? 차이점, 예제로 확인 :: 마이자몽

추상클래스 인터페이스 왜... 사용할까? 우리는 추상클래스와 인터페이스에 대해서 알고 있냐고 누가 물어본다면 알고 있다고 대답을 하고있습니다. 그런데 이론적인 내용 말고 정작 "왜 사용하

myjamong.tistory.com

 

'JAVA' 카테고리의 다른 글

Java Stream  (0) 2021.05.07
Java I/O Stream -2 파일 입출력  (0) 2021.05.07
Java I/O Stream -3 보조 스트림  (0) 2021.05.07
Java I/O Stream -1 기본 스트림  (0) 2021.05.07
String, StringBuilder, StringBuffer 클래스  (0) 2021.05.06

+ Recent posts