-
CHAPTER 7. (8) 인터페이스란? ★java/ㄴ CHAPTER 7. 객체지향 프로그래밍 2 2020. 4. 2. 13:51
인터페이스
- 기획서
- 일종의 추상 클래스 (다른 클래스 작성 시 도움 주기 위한 목적)
- 추상 메서드를 갖지만 추상 클래스보다 추상화 정도가 높음
- 오직 추상 메서드와 상수만을 가짐 (일반 메서드, 멤버 변수 불가)
- 접근 제어자로 public , default만 가능
조건
- 모든 변수는 public static final (생략 가능)
- 모든 메서드는 public abstract (생략 가능)
ㄴ 왜? 모든 멤버에 예외없이 적용되는 사항이기 때문
(생략된 제어자는 컴파일 시 컴파일러가 자동으로 추가함)
특징
- 인터페이스로부터만 상속 받음
- 다중 상속 가능 (여러 인터페이스로부터 상속 받기 가능 - 클래스와 차이점)
★
ex.
Fightable f = (Fightable)new Fighter();
= Fightable 인터페이스를 Fighter 클래스가 구현 시, Fighter 인스턴스를 Fightable타입 참조변수로 참조 가능
★
ex.
void attack(Fightable f) {}
인터페이스 타입의 매개변수가 갖는 의미 (Fightable f)
= 메서드 호출 시 해당 인터페이스를 구현한 클래스의 인스턴스를 매개변수로 제공해야 한다는 뜻
장점
- 개발시간 단축 (메서드 내용 상관없이 선언부만 알면 되기 때문)
- 표준화 가능 (기본 틀 인터페이스로 작성 후, 일관되고 정형화된 프로그램 개발 가능)
- 독립적 프로그래밍 가능 (클래스 선언, 구현 분리로 실제구현에 독립적인 프로그램 작성 가능)
인터페이스가 가지는 것
ㄴ 클래스 변수(상수)
ㄴ 추상메서드
인터페이스 목적
- 구현 클래스가 구현할 메서드의 표준(규격)을 정의
- 결합도를 느슨하게 하기위해서
클래스-클래스 : 상속관계, 포함관계
인터페이스-인터페이스 : 상속관계
인터페이스-클래스 : 구현관계
// monitor.display() 실행 시
// 실제 멤버변수에 조립된 객체가 NormalMonitor일 때 // 컬러로 동영상 재생
// HDMonitor일 때 // 4K 화질로 동영상 재생
// CinemaMonitor일 때 // 100인치 화면에서 동영상 재생
// LCDCMonitor일 때 // 터치 가능한 100인치 화면에서 동영상 재생
/*
★ 다형성 (polymorphism)
1. 부모 (클래스) 타입의 참조변수로 자식 (클래스) 타입 인스턴스를 참조 가능
2. 실행하는 메서드는 동일하지만, 부모 타입의 참조 변수에 따라 실제로 조립된 객체의 재정의(오버라이딩)된 내용 실행
: 실행하는 메서드 동일, 실제 조립된 객체에 따라 다른 실행결과 발현됨
*/'java > ㄴ CHAPTER 7. 객체지향 프로그래밍 2' 카테고리의 다른 글
CHAPTER 7. (9) 내부 클래스란? (인스턴스, 스태틱, 지역, 익명 클래스 포함) (0) 2020.04.02 CHAPTER 7. (7) 추상 클래스란? (추상 메서드 포함) (0) 2020.04.02 CHAPTER 7. (6) 다형성이란? (참조변수 형변환, 매개변수 다형성, instanceof연산자 포함) ★★ (0) 2020.04.02 CHAPTER 7. (5) abstract란? (get, set 포함) (0) 2020.04.02 CHAPTER 7. (4) 제어자란? (static, final 포함) (0) 2020.04.02