자바

JAVA STEP 30. Interface

2023. 2. 21. 17:41
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
'자바' 카테고리의 다른 글
  • JAVA STEP 32. 컬렉션(ArrayList)
  • JAVA STEP 31. abstract&Object&Generic
  • JAVA STEP 29. CASTING
  • JAVA STEP 28. 상속, Static 예제
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
Developer Story HouseIT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • 데이터베이스
  • IT자격증공부
  • 웹페이지
  • 정보보안전문가
  • IT개발자
  • 개발블로그
  • css
  • it
  • jsp
  • 백엔드
  • 백준
  • 자바
  • 웹개발자
  • 앱개발자
  • 알고리즘
  • ajax
  • 코딩테스트
  • java
  • 웹개발
  • 개발자
  • IT자격증
  • html
  • JavaScript
  • 정보처리기사
  • jquery
  • 프론트엔드
  • React
  • DBA
  • 정보처리기사필기
  • DB

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
JAVA STEP 30. Interface
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.