[Java] 인터페이스

소이뎁·2023년 10월 17일
1

Java

목록 보기
18/26
post-thumbnail

📍 인터페이스

  • 인터페이스는 클래스의 동작을 지정하는 데 사용되는 추상 유형이다.
  • 인터페이스는 자료형이다.
  • 필드(권장X)와 메소드가 포함될 수 있다.
  • 필드에는 public, static, final이 자동으로 붙으므로, 상수로 취급된다.
  • 메소드에는 public, abstract가 자동으로 붙으므로, implements되는 클래스에서 오버라이딩하여 메소드를 구현해야 한다.
  • 클래스에 implements되고, 여러 개의 인터페이스를 한 클래스에서 구현(다중 구현)할 수 있다.
  • 클래스와 인터페이스 사이에서 업 캐스팅(클래스 -> 인터페이스), 다운 캐스팅(인터페이스 -> 클래스)이 가능하다.
  • 주로 추상화와 다중 상속을 위해 사용한다.

이미지 출처

// 🟣 Act Interface
package lesson06.quiz01;

public interface Act {
	public void action();
}
// 🟣 Sing Interface
package lesson06.quiz01;

public interface Sing {
	public void song();
}
// 🟢 Applicant Class
//   : 연기, 노래 모두 가능한 지원자
package lesson06.quiz01;

public class Applicant implements Act, Sing {

	@Override
	public void song() {
		System.out.println("노래 중");
	}

	@Override
	public void action() {
		System.out.println("연기 중");
	}

}
// 🟢 JypEntertainment Class
//   : 연기자 오디션, 아이돌 오디션을 모두 보는 회사
package lesson06.quiz01;

public class JypEntertainment {
	
    // up casting (Class -> Interface) (EntertainerApplicant -> ActorAudition)
	public void actorAudition(Act actorAudition) { 
		actorAudition.action();
	}
	
    // up casting (Class -> Interface) (EntertainerApplicant -> IdolAudition)
	public void idolAudition(Sing idolAudition) {
		idolAudition.song();
	}
	
}
// 🟢 Test Class (Main Class)
package lesson06.quiz01;

public class Test {

	public static void main(String[] args) {
		
		// 지원자
		Applicant boram = new Applicant();

		// 지원할 곳 (JYP)
		JypEntertainment jyp = new JypEntertainment();
		jyp.actorAudition(boram);
		jyp.idolAudition(boram);
		
	}

}

📍 클래스 vs 인터페이스

ClassInterface
인스턴스화가능불가능
메소드 구현가능불가능
사용 가능한 접근 제한자private/default/protect/publicpublic

References

🔗 https://www.geeksforgeeks.org/interfaces-in-java

0개의 댓글