인터페이스

Dec 26, 2023
인터페이스

인터페이스 : 행동이 강제됨
프로토콜 : 수평적 약속 인터페이스 : 수직적 약속
일방적, 상하 관계가 있음
 
정부가 고속도로를 만듦
자동차를 타는 사람은 나(개인)
정부가 고속도로를 만들고 나서 이대로 써! 하면 인터페이스
notion image
 
트럭들이 짐을 내리는데 시간이 오래걸림
짐들을 모으는 컨테이너를 만들었음
컨테이너를 실을 트럭과 컨테이너를 옮길 크레인이 필요함
컨테이너에 모든 것을 맞춘 인터페이스
notion image
 
💡
추상 클래스 : 구체적인 것을 만든 후 추상 클래스를 만듦
공통점들을 모아서 만드는 것
이미 구조가 만들어져 있으면 상속
💡
인터페이스 : 무조건 필요하다고 강제시킬 때 사용
내가 만든 프로그램대로 돌아가게 할 때
new 불가능
메서드 강제화
default : 몸체도 만들 수 있음
implements하는 구현체가 있음
💡
추상 클래스와 인터페이스는 문법적으로 다른 것은 없음
 
package ex07.example; interface Remocon{ // 메서드 강제 -> 동적 바인딩 void on(); // 앞에 public abstract 생략 가능 void off(); } class SamsungRemocon implements Remocon{ @Override public void on() { System.out.println("삼성 리모콘 on"); } @Override public void off() { System.out.println("삼성 리모콘 off"); } } class LgRemocon implements Remocon{ @Override public void on() { System.out.println("엘지 리모콘 on"); } @Override public void off() { System.out.println("엘지 리모콘 off"); } } /** * 작성자 : 홍길동 * 날짜 : 2023.12.26 * 구현체 : SamsungRemocon, LgRemocon */ class CommonRemocon{ // 컴포지션(결합) = has 관계 : CommonRemocon이 Remocon을 가지고 있음 // [SamsungRemocon, Remocon] // [LgRemocon, Remocon] private Remocon r; // null 값 = 인터페이스 or 추상클래스 public CommonRemocon(Remocon r) { this.r = r; } public void on(){ r.on(); } public void off(){ r.off(); } } public class InterEx01 { public static void main(String[] args) { //Remocon samsung = new SamsungRemocon(); // [SamsungRemocon, Remocon] //samsung.on(); // 생성자로 객체 전달 // 동적 바인딩 : 내가 무엇을 넣느냐에 따라서 결정됨 CommonRemocon cr = new CommonRemocon(new SamsungRemocon()); cr.on(); } }
 
💡
컴포지션 : 결합 = has 관계
💡
동적 바인딩 : 내가 무엇을 넣느냐에 따라서 결정됨
 
Share article

vosw1