[Java] 인터페이스와 추상클래스

누구세요·2024년 9월 3일

추상 메서드

  • 선언은 되어있으나 코드가 구현되지 않은 메서드
  • 자식 클래스에서 오버라이딩하여 사용한다.
  • 일반적인 메서드와 다르게 블록{}이 없다

추상 메서드 선언

public abstract void sayHello();

추상 클래스

  • 하나 이상의 추상 메서드를 포함하는 클래스
  • 클래스의 공통적인 부분을 추출해 규격을 잡아놓은 형태

추상 클래스 선언

public abstract class 추상클래스명 {
		abstract 리턴타입 메서드이름(매개변수, ...);
}

추상 클래스 구현

public class 클래스명 extends 추상클래스명 {
    @Override
    public 리턴타입 메서드이름(매개변수, ...) {
		       // 실행문
    }
}

인터페이스

  • 추상 메소드들의 집합(?)

인터페이스 선언

public interface 인터페이스명 { 
	void 메서드명(매개변수, ...);
}

인터페이스 구현

public class 클래스명 implements 인터페이스명 { 
		// 추상 메서드 오버라이딩
		@Override
	    public 리턴타입 메서드이름(매개변수, ...) {
			       // 실행문
	    }
}

인터페이스와 추상클래스 차이

구분추상 클래스(abstract)인터페이스(Interface)
키워드abstractinterface
상속 키워드extendsimplements
멤버 변수제한 Xpublic static final(생략시 컴파일러가 자동으로 추가)
메서드제한 Xpublic abstract(생략시 컴파일러가 자동으로 추가)
다중상속불가능가능
구현시상속받은 클래스에서 추상 클래스의 추상 메서드는 반드시 구현 필요인터페이스에 정의된 모든 메서드 오버라이딩하여 구현 필요
언제 사용하나
  • 부모클래스에서 공통 부분 설계가 완료되면 자식 클래스에서 상속 받아 사용
  • 공통적인 변수나 함수를 묶을때
  • 상속 관계가 없는 다른 클래스들이 서로 동일한 행위(method)를 구현해야할때 사용
  • 다중상속을 해야할때

0개의 댓글