[Java] 인터페이스, Interface

수경·2023년 8월 10일
0
post-thumbnail

1. 인터페이스란

  • 클래스의 일종이다.
  • 객체를 생성할 수 없다. (예제코드 확인)
  • 참조 변수는 생성할 수 있다.
  • 클래스의 부모 역할을 한다.
  • 인터페이스는 상속받는 여러 클래스들을 행동(사용법, 메소드)들을 통일 시키는 역할을 한다 > 행동 규약 정의
  • 구현된 멤버를 가질 수 없다. (예제코드 확인)
  • 구현부를 가진 메소드를 소유할 수 없다. (예제코드 확인)
  • 인터페이스를 상속받는 클래스는 반드시 인터페이스의 추상 메소드를 구현해야 한다. (예제코드 확인)

2. 인터페이스 선언

인터페이스의 멤버 구현

  • 멤버 변수
  • 멤버 메소드
  • 인터페이스는 추상 멤버(추상 메소드)만을 가질 수 있다.

3. 예제코드

메인

public class Ex51_interface {
	public static void main(String[] args) {
		Mouse m1 = new Mouse();	//인터페이스는 객체를 생성할 수 없다.
		m1.click();
		
		M705 m1 = new M705();
		m1.click();
		
		G304 m2 = new G304();
		m2.push();		//***문제점 > 사용자 경험을 살리지 못했다.
		m2.click();
		
	}
}

인터페이스 선언

//인터페이스 선언
interface Mouse {
	//*****인터페이스는 구현된 멤버를 가질 수 없다.
	//public int a;
	//public void aaa() {	}
	
	//*****인터페이스는 구현부를 가진 메소드를 소유할 수 없다.
	//public void aaa() {
		//구현부
	//}
	
	//추상메소드, Abstract Method
	//- 구현부 없이 선언부만 가지는 메소드
	public void click();
	
}

인터페이스 상속

//*** 인터페이스를 상속받는 클래스는 반드시 인터페이스의 추상 메소드를 구현해야 한다.
class M705 implements Mouse {
	//추상메소드를 구현했다. > 일종의 오버라이드
	public void click() {
		System.out.println("클릭");
	}
	
}

class G304 implements Mouse {
	@Override
    //꼭 public 으로 사용해야 함. 따라서, public 생략 가능
	void click() {
		System.out.println("클릭!");
	}
	
}

클릭
클릭!

4. 단일/다중 상속

  1. 단일 상속 : 하나의 자식이 부모가 1개 일 때
  2. 다중 상속 : 부모가 2개 이상 일 때

다중 상속

  • 자바는 다중 상속을 허용하지 않는다.
  • 인터페이스에 한해서 다중 상속을 허용한다. > 인터페이스는 구현부가 없으므로 가능하다.
  • implements 뒤에 상속받을 클래스들을 나열한다.
    ex) class Hong implements 상속1, 상속2
profile
웹백엔드개발자를 꿈꾸는

0개의 댓글