본문 바로가기
Java/TIL (Today I Learned)

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

by 정재인 2023. 8. 7.

■ 추상클래스 (abstract)

- 추상 메서드를 선언하여 상속을 통해 자식 클래스에서 완성하도록 유도하는 클래스 "미완성 설계도"

- 클래스를 abstract로 지정하면 new를 통해 객체 생성 X

- interface의 메소드와 다르게 구현 부분 X

- abstract로 선언한 메소드를 반드시 자식 클래스에서 구현해야 함(오버라이딩) 

- 다중 상속 X

 

Code

abstract class 클래스A{
	public abstract void 메서드();
}

class classB extends classA{
	@Override
	public void 메서드(){
		... //구현
	}
}

 


 

 인터페이스 (interface)

- 추상 클래스와는 다르게 구현부가 있는 일반 메서드, 일반 변수 멤버 등을 가질 수 없음 "기본 설계도"

- 모든 멤버 변수는 public static final이어야 하고, 생략 가능

- 모든 메서드는 public abstract이어야 하고, 생략 가능

- 다중 상속 가능

 

 Code

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

 


 정리

- 추상 클래스는 extends(확장)처럼 자신의 기능들을 하위로 확장
- 인터페이스는 implements(구현)처럼 인터페이스에 정의 된 메서드를 각 클래스의 목적에 맞게 동일한 기능으로 구현

- 추상 클래스: 자식 클래스 is kind of 부모 클래스,
- 인터페이스: 자식 클래스 is able to 부모 인터페이스

 

  추상 클래스 인터페이스
사용 키워드 abstract interface
사용 가능 변수 제한X static final (상수)
사용 가능 접근 제어자 제한X public
상속 키워드 extends implements
다중 상속 X O
공통점 추상 메서드를 가지고 있음
인스턴스화 X (new 생성자 사용 X)
인터페이스와 추상 클래스를 구현, 상속한 클래스는 추상 메소드를 반드시 구현

 

댓글