반응형
1. 인터페이스(Interface)
- 현실에 존재하는 대상을 클래스보다 추상적으로 표현하기 위한 자료형(참조형)
- vs 추상(부모)클래스
2. 인터페이스의 구성멤버
- 일반적으로 상수필드(Constant Field)와 추상메소드(Abstract Method)로만 선언 가능
- JDK8 이상
- 상수필드(Constant Field)와 추상메소드(Abstract Method) +
- 기본메소드(Default Method)와 정적메소드(Static Method)도 선언 가능하지만 잘 사용하지 않음
3. 인터페이스의 형식
- 인터페이스의 이름은 파스칼 표기법을 권장
public interface 인터페이스명{
//상수필드 (필수)
자료형 필드명 = 값; -//[public static final]제한자 생략 가능
...
//추상메소드 (필수)
반환형 메소드명(자료형 매개변수명, ...); //[public abstract]제한자 생략 가능
...
}
4. 인터페이스의 특징
- 인터페이스로 객체 생성 불가능
- 인터페이스로 참조변수를 생성해 자식클래스의 객체 저장 가능
- 다중 상속 가능
- 클래스 → 인터페이스 , 인터페이스 , 인터페이스 ..
- 클래스는 인터페이스(상수필드 또는 추상메소드)를 상속받아 사용할 수 있음 (클래스의 부모 역할 제공)
public class 클래스명 implements 인터페이스명,인터페이스명,... { }
-
- 인터페이스 → 인터페이스 , 인터페이스, 인터페이스 ..
- 인터페이스는 다른 인터페이스를 상속할 수 있음 (인터페이스의 부모 역할 제공)
public interface 인터페이스명 extends 인터페이스명,인퍼테이스명,... { }
- 자료형이 다르면 implements를 쓴다고 기억하자!
- 인터페이스의 모든 추상메소드는 모든 자식클래스에서 무조건 오버라이드 선언
- 자식클래스는 상속받은 인터페이스의 모든 추상메소드를 무조건 오버라이드 선언해야함
//자식클래스에서..
package realization;
public class BoatCarReal implements BoatCar{
@Override
public void navigate() {System.out.println("바다를 향해하는 능력");}
@Override
public void run() {System.out.println("땅위를 달리는 능력");}
@Override
public void floating() {System.out.println("공중에 떠 있는 능력");}
}
5. 인터페이스를 상속받아 사용하는 이유
📌 클래스의 단일 상속 관련 문제를 일부 보완하기 위해
public class 늑대인간 extends 인간, 늑대 {
//불가능
}
public class 늑대인간 extends 인간 implements 늑대 {
//가능
}
public class 흡혈늑대인간 extends 인간 implements 늑대, 흡혈귀 {
//가능
}
📌 클래스에 대한 작업지시서의 역할을 제공하기 위해
- 추상메소드의 역할 = 작업지시서의 역할
- 인터페이스를 상속받은 모든 자식클래스에 동일한 형태의 메소드가 선언되도록 메소드의 작성규칙 제공
- 자식들아~~~ 너희 무조건 이 메소드 오버라이드 선언해야해!!!!!!!! 안하면 error임!!
- 클래스간의 결합도를 낮춰 시스템 변경에 따른 유지 효율성 증가
- 인터페이스 상속 후 참조변수(참조변수)를 부모로 만들어서 자식 객체 저장하기!!
- 객체형변환(명시적, 묵시적)을 통해 자식클래스 메소드도 모두 호출 가능
- 결합도가 높다 = 유지보수가 어렵다
- 결합도가 낮다 = 유지보수가 쉽다 = 쉽게 업데이트 가능하다
- 고급프로그램에서 많이 이용
- 결합도를 낮추는 기능 = 인터페이스!!
public class TV{}
public class Radio{}
public class SmartPhone{}
//동일 행위 - 볼륨 증가, 볼륨 감소 는 인터페이스로 만들어 상속받자!!
public interface Volume{}
public class TV implements Volume{}
public class Radio implements Volume{}
public class SmartPhone implements Volume{}
반응형
'java > realization' 카테고리의 다른 글
[realization] 6. 상수필드(Constant)와 열거형(Enum) (1) | 2024.06.11 |
---|---|
[realization] 5. 기본메소드를 포함한 인터페이스 (0) | 2024.06.11 |
[realization] 4. 결합도를 낮춰 유지보수의 효율성 높이는 방법 (1) | 2024.06.10 |
[realization] 3. 🚢Boat🚗Car🔥RealApp (0) | 2024.06.10 |
[realization] 2. 🦊WolfHumanApp (0) | 2024.06.09 |