[JAVA] 추상(abstract) 클래스, 인터페이스(interface)

army246·2022년 4월 14일
0

JAVA

목록 보기
5/10
post-custom-banner

📌 추상 클래스(abstract class)

클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상 클래스라고 하며,
객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다.
추상 클래스와 실체 클래스는 상속관계를 가지고 있다. 추상 클래스가 부모, 실체 클래스가 자식으로 구현되엉ㅆ고 실체 클래스는 추상 클래스의 모든 특성을 물려받고, 추가적으로 특성을 구현할 수 있다.

public abstract class 클래스 {
	// 멤버변수
    // 생성자
    // 메소드
}

❗️ 추상 메소드

abstract와 함께 메소드의 시그니처만 있고 실행 내용인 중괄호{}가 없는 메소드이다.
추상 클래스에서만 선언 할 수 있다. 추상 메소드는 자식 클래스에서 재정의되어 실행 내용을 결정해야 한다.

abstract 리턴타입 메소드이름(매개변수,...);

📌 인터페이스(interface)

인터페이스는 개발 코드와 객체가 서로 통신하는 접점 역할을 한다.
인터페이스 선언은 class 키워드가 아닌 interface라는 키워드를 사용한다.
상수와 추상 메소드로만 구성되어 있다.

interface 인터페이스이름 {
	// 상수
    // 추상 메소드
}

❗️ 상수 선언

상수는 인터페이스에 고정된 값으로 실행 시 데이터를 바꿀 수 없다.
멤버 변수와 구분하기 위해서 모두 대문자로 작성하며 다른 단어 사이를 언더바(_)로 연결한다.
인터페이스 상수는 반드시 선언과 동시에 초기값을 지정해준다.
final 과 static 이 자동으로 추가된다.

[public static final] 타입 상수이름 = 값;

❗️ 추상 메소드 선언

인터페이스로 호출된 메소드는 객체에서 실행되기 때문에 추상 메소드로 선언한다.
추상 메소드는 리턴 타입, 메소드 이름, 매개 변수만을 선언되고 중괄호{}는 붙이지 않는 메소드이다.
추상 메소드 앞에 abstract를 생략해도 자동으로 추가된다.

[public abstract] 리턴 타입, 메소드이름(매개변수, ...);

📌 인터페이스 상속

추상 클래스처럼 인터페이스도 최상위 부모 클래스로 사용된다.
구현하다는 의미를 가진 implements 예약어를 사용한다.
인터페이스에 선언된 추상 메소드의 실체 메소드를 선언한다.

public class 구현클래스이름 implements 인터페이스이름 { 
	// 인터페이스에 선언된 추상 메소드의 실체 메소드 선언
}

📌 인터페이스 다중 상속

자바는 단일 상속만을 허용하지만 인터페이스에 한하여만 다중 상속을 할 수 있다.
왜냐하면 인터페이스가 상수만을 허용하기 때문이다.
다중 상속은 콤마(,)를 사용하여 구분한다.

public class 구현클래스이름 implements 인터페이스A, 인터페이스B {
	// 인터페이스A에 선언된 추상 메소드의 실체 메소드 선언
    // 인터페이스B에 선언된 추상 메소드의 실체 메소드 선언
}

참고
혼자 공부하는 자바

profile
천천히 꾸준히
post-custom-banner

0개의 댓글