이롭게 현명하게

[JAVA] 자바 인터페이스 본문

JAVA

[JAVA] 자바 인터페이스

dev_y.h 2023. 5. 2. 18:30
728x90
반응형


[인터페이스]

인터페이스 : 클래스가 구현해야 할 메소드들이 선언되는 추상형

public interface 인터페이스이름{ ... }

<인터페이스의 구성 요소>

  • 상수 : public만 허용, public static final 생략
  • 추상 메소드 : public abstract 생략 가능
  • default 메소드
    • 인터페이스에 코드가 작성된 메소드
    • 인터페이스를 구현한느 클래스에 자동상속
    • public 접근 지정만 허용, 생략가능
  • public 메소드
    • 인터페이스 내에 메소드 코드가 작성되어야 한다.
    • 인터페이스 내에 있는 다른 메소드에 의해서만 호출 가능
  • static 메소드
    • public,private 모두 지정 가능. 생략하면 public

 

<인터페이스 특징>

  • 인터페이스의 객체 생성 불가
  • 인터페이스 타입의 레퍼런스 변수 선언 가능
  • 인터페이스 구현 : 인터페이스를 상속받는 클래스는 인터페이스의 모든 추상 메소드 반드시 구현
  • 다른 인터페이스 상속 가능
  • 인터페이스의 다중 상속 가능

 

<인터페이스 구현>

  • implements 키워드 사용
  • 여러개의 인터페이스 동시 구현 가능
  • 인터페이스의 추상 메소드를 모두 구현한 클래스 작성

 

<인터페이스 상속>

interface MobilePhoneInterface extends PhoneInterface {
    void sendSMS(); // 새로운 추상 메소드 추가
    void receiveSMS(); // 새로운 추상 메소드 추가
}

 

<추상 클래스와 인터페이스 비교>

공통점

  •  객체를 생성할 수 없고 상속을 위한 슈퍼 클래스로만 사용
  • 클래스의 다형성을 실현하기 위한 목적

다른점

  목적 구성
추상 클래스 추상 클래스는 서브 클래스에서 필요로 하는 대부분의 기능을 구현하여 두고 서브 클래스가 상속 받아 활용할 수 있도록 하되, 서브 클래스에서 구현할 수 밖에 없는 기능만을 추상 메소드로 선언하여 서브 클래스에서 구현하도록 하는 목적(다형성) - 추상 메소드와 일반 메소드 모두 포함
- 상수, 변수 필드 모두 포함
인터페이스 인터페이스는 객체의 기능을 모두 공개한 표준화 문서와 같은 것으로, 개발자에게 인터페이스를 상속받는 클래스의 목적에 따라 인터페이스의 모든 추상 메소드를 만들도록 하는 목적(다형성) - 변수 필드(멤버 변수)는 포함하지 않음
- 상수, 추상 메소드, 일반 메소드, default 메소드, static 메소드 모두 포함
- protectected 접근 지성 선언 불가
- 다중 상속 지

 

//InA.java

public interface InA {
	public void meA();
}
//InB.java

public interface InB {
	//int num; // 에러
	public void meB();
}
//InC.java

public interface InC extends InA,InB{// 자식 인터페이스
	public void meC();
}
//ClassC.java

public class ClassC implements InC{//인터페이스 상속받은 클래스

	@Override
	public void meA() {
		// TODO Auto-generated method stub
		System.out.println("meA()실행");
	}

	@Override
	public void meB() {
		// TODO Auto-generated method stub
		System.out.println("meB()실행");
	}

	@Override
	public void meC() {
		// TODO Auto-generated method stub
		System.out.println("meC()실행");
	}
	
}
//Main.java

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ClassC cc = new ClassC();
		cc.meA(); cc.meB(); cc.meC();
		System.out.println("---");
		
		InA ia = cc;
		ia.meA();
		//ia.meB();
		//ia.meC();
		System.out.println("---");
		
		InB ib = cc;
		//ib.meA();
		ib.meB();
		//ib.meC();
		System.out.println("---");
		
		InC ic = cc;
		//ib.meA();
		//ib.meB();
		ic.meC();
		System.out.println("---");
		
		
	}

}
< 실행 결과>

meA()실행
meB()실행
meC()실행
---
meA()실행
---
meB()실행
---
meC()실행
---

 

 


잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊

댓글과 좋아요는 큰 힘이 됩니다!

 

더보기

[ 참고자료 ]

 

 

 

 

728x90
반응형

'JAVA' 카테고리의 다른 글

[JAVA] 자바 추상 클래스와 추상 메소드  (0) 2023.05.01
[JAVA] 자바 타입 변환  (0) 2023.04.28
[JAVA] 자바 클래스 상속  (0) 2023.04.27
[JAVA] 자바 상속 개념  (0) 2023.04.26
[JAVA] 자바 접근 제한자  (0) 2023.04.25
Comments