자바

JAVA STEP 30. Interface

IT의 큰손 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