어떠한 객체가 인터페이스를 사용한다면 인터페이스의 시그니처 메서드를 반드시 구현해야 한다
interface I{
public void z(); // 중괄호 작성하면안됨
}
class A implements I{
public void z(){}
}
// 클래스 A 는 인터페이스 I를 구현한다
인터페이스(Interface)란?
자바에서 인터페이스는 클래스들이 필수로 구현해야 하는 추상 자료형입니다.
간단히 말해, 객체의 사용방법을 가이드라인 하는 것
인터페이스는 추상 메서드와 상수로만 이루어져 있음
인터페이스 규칙
- 하나의 클래스가 여러 개의 인터페이스를 구현할 수 있다.
interface I1{
public void x();
}
interface I2{
public void z();
}
class A implements I1,I2{
public void x(){};
public void z(){};
}
- 인터페이스도 상속이 가능하다
interface I3{
public void x();
}
interface I4 extends I3{
public void z();
}
class B implements I4{
public void x(){};
public void z(){};
}
- 인터페이스의 맴버는 반드시 public이다.
- 생성자 사용 불가 : 인터페이스는 객체가 아니므로 생성자를 사용할 수 없음
- 추상 메서드와 상수만 사용 가능 : 인터페이스에는 구현 소스를 생성할 수 없음
💡abstract vs interface
추상 클래스는 일반 클래스와 동일하지만 하위 클래스가 상속받아서 사용하도록 강제한다
비어있는 로직인 abstract 메 서드나 필드가 있을 수 있으나 동시에 구체적인 로직을 가지고 있는 필드나 메서드를 가지고 있을 수 있다
인터페이스는 구체적인 로직을 가지고 있는 로직을 인터페이스에 포함시켜서는 안된다
반드시 본체가 없는 메서드 들만 가지고 있어야 한다
- 추상 클래스 -> 객체들의 공통 특성들을 모아놓은 클래스
- 인터페이스 -> 객체 생성을 위한 설계도
'JAVA' 카테고리의 다른 글
[Java] 람다식 Lambda Expression (0) | 2024.05.04 |
---|---|
[Java] Collections framework (0) | 2024.05.04 |
[Java] 추상 클래스 abstract (0) | 2024.05.04 |
[Java] 싱글톤 패턴 (0) | 2024.05.04 |
[Java] String 문자열 타입 (0) | 2024.05.04 |