728x90
★ 인터페이스 (interface)
- 클래스의 일종
- 자료형(변수 생성 가능)
- 인터페이스 멤버 선언
- interface 인터페이스명 {}
- 멤버 변수 선언 불가능
- 추상 메소드를 멤버로 가진다.
- 인터페이스는 추상메소드들의 집합 > 구현 멤버를 가질 수 없다.
- 구현멤버(변수, 구현부를 가지는 메소드)
- 소스코드
interface Mouse {
void drag();
void click();
void dblclick();
}
//인터페이스를 상속받을 때는, implements //The type G300 must implement the inherited abstract method Mouse.drag()
//인터페이스를 부모로하는 자식 클래스의 의무!!
//- 물려준 추상 메소드의 몸통을 만들어야 한다. > 구현부 > 메소드 구현한다.
class G300 implements Mouse {
//부모의 추상 메소드를 구현했다.
public void drag() {
}
public void click() {
}
public void dblclick() {
}
}
//규약의 집합 > 모든 상속받은 클래스들의 행동을 강제로 이행 + 사용법이 통일
interface Printer {
//프린터 > 자격을 가지는 모든 실제 기기들의 공통된 사용법 정의
public void print();
}
class HP600 implements Printer{
public void print() {
}
}
class LG500 implements Printer{
public void print() {
}
}
- ex) 노트북을 예로든 인터페이스
- 클래스 부모 > 구현된 멤버를 상속해준다.
- 인터페이스 부모 > 엄격한 부모 > 추상 메소드
- 소스코드
public class Ex64_interface {
public static void main(String[] args) {
Samsung100 s1 = new Samsung100();
s1.on();
s1.off();
LG200 l2 = new LG200();
l2.on();
l2.off();
}//main
}//main class
interface Notebook {
void on();
void off();
}
class Samsung100 implements Notebook{
public void on() {
System.out.println("삼성 기술로 전원을 켭니다.");
}
public void off() {
System.out.println("삼성 기술로 전원을 끕니다.");
}
}
class LG200 implements Notebook {
public void on() {
System.out.println("Power On");
}
public void off() {
System.out.println("Power Off");
}
}
- 다중 상속
- 자바는 클래스간의 다중 상속을 지원하지 않는다.
- 자바는 인터페이스에 한 해서 다중 상속을 지원한다.
- ex) 인물을 이용한 다중 상속 예제
//홍길동
//1. 아빠 역할 > 집
//2. 과장 역할 > 회사
//3. 지바 역할 > 교회
//4. 바리스타 역할 > 카페
//아빠로서 갖춰야할 행동에 규약
interface 아빠 {
void 돈을번다();
void 아이와놀아준다();
void 가족을지킨다();
}
//과장으로서 갖춰야할 행동에 규약
interface 과장 {
void 직원을관리한다();
void 영업을한다();
void 결재를한다();
}
class 홍길동 implements 아빠, 과장 { //Role
@Override
public void 돈을번다() {
}
@Override
public void 아이와놀아준다() {
}
@Override
public void 가족을지킨다() {
}
@Override
public void 직원을관리한다() {
// TODO Auto-generated method stub
}
@Override
public void 영업을한다() {
// TODO Auto-generated method stub
}
@Override
public void 결재를한다() {
// TODO Auto-generated method stub
}
}
728x90
'자바' 카테고리의 다른 글
JAVA STEP 32. 컬렉션(ArrayList) (0) | 2023.02.23 |
---|---|
JAVA STEP 31. abstract&Object&Generic (0) | 2023.02.22 |
JAVA STEP 29. CASTING (0) | 2023.02.21 |
JAVA STEP 28. 상속, Static 예제 (0) | 2023.02.20 |
JAVA STEP 27. Inheritance, Static (0) | 2023.02.20 |