728x90
반응형
인터페이스란?
- 모든 메서드가 추상 메서드로 선언된다.
- 모든 변수는 상수로 선언된다.
- 다중 상속이 가능하다.
- 인터페이스는 new를 할 수 없다.(인스턴스화 불가능)
- private 사용 할 수 없다.
- 부모 인터페이스를 물려받은 자식 클래스는 모두 오버라이딩 해야한다.
public class Main{
public static void main(String[] args){
사람 사람a = new 홍길동();
택시기사 택시기사a = (택시기사)사람a;
버스기사 버스기사a = (버스기사)사람a;
}
}
abstract class 사람{
}
interface 택시기사{
}
interface 버스기사{
}
class 홍길동 extends 사람 implements 택시기사, 버스기사{
}
인터페이스 구현과 형 변변환
- 인터페이스를 구현한 클래스는 인터페이스 형으로 선언한 변수로 형 변환 할 수 있다.
- 상속에서의 형 변환과 동일한 의미이다.
- 클래스 상속과 달리 구현 코드가 없으므로 여러 인터페이스를 구현할 수 있다.
- 형 변환되는 경우 인터페이스에 선언된 메서드만을 사용가능하다.
인터페이스를 사용하는 이유
- 클래스나 프로그램이 제공하는 기능을 명시적으로 선언
- 클라이언트 프로그램은 인터페이스에 선언된 메서드 명세만 보고 이를 구현한 클래스를 사용할 수 있다.
- 어떤 객체가 하나의 인터페이스 타입이라는 것은 그 인터페이스가 제공하는 모든 메서드를 구현했다는 의미이다.
- 인터페이스를 구현한 다양한 객체를 사용 - 다형성
구상클래스 vs 추상클래스 vs 인터페이스
종류 | 구상클래스 | 추상클래스 | 인터페이스 |
추상성 | 0% | 0% ~ 100% | 100% |
추상메서드 개수 | 0개 | 0 ~ n개 | 모든 메서드 |
구상성 | 100% | 0% ~ 100% | 0% |
구상메서드 개수 | 모든 메서드 (추상메서드 받은경우 오버라이딩 필수) |
0 ~ n개 | 0개 |
다른 클래스에 제공자로 쓰일 때 | extends | extends | implements |
객체화(new) 가능 여부 | 가능 | 불가능 | 불가능 |
728x90
반응형
'언어(Language) > Java' 카테고리의 다른 글
[Java] 자동형변환과 수동형변환 (0) | 2023.02.28 |
---|---|
[Java] Object 클래스의 메서드 (0) | 2023.02.28 |
[Java] 추상 클래스(abstract class) (0) | 2023.02.28 |
[Java] 형변환(업캐스팅), 다운캐스팅 (0) | 2023.02.24 |
[Java] 상속(Inheritance)과 다형성(polymorphism) (0) | 2023.02.24 |