[JAVA] 인터페이스

JoJo·2023년 7월 5일
0
post-custom-banner

💡 인터페이스


📌 인터페이스란?

다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다.

자바에서 추상 클래스는 추상 메소드뿐만 아니라, 생성자, 필드, 일반 메소드도 포함할 수 있는데,
인터페이스(interface)에서는 오직 추상 메소드와 상수만을 포함할 수 있습니다.

자바의 다형성을 극대화하여 개발코드 수정을 줄이고, 유지보수성을 높이기 위해 인터페이스를 사용합니다.


📌 인터페이스 선언 방법

🧷 접근제어자와 함께 interface 키워드를 사용합니다.

* 문법

public inrerface PhoneInterface { // 인터페이스 선언

	// 상수 필드 public static final 생략 가능
	public static final int TIMOUT = 10000;
    
    // 추상 메소드 public abstract 생략 가능
    public abstract void sendCall();
    public abstract void receiveCall();
    // default 메소드 public 생략 가능
    public default void printLogo() {
    }; // default 메소드

📌 인터페이스의 특징

🧷 인터페이스는 interface 키워드를 사용하여 정의합니다.

🧷 인터페이스는 객체 생성이 불가능합니다.

🧷 인터페이스는 상수와 추상메소드로 구성되어있습니다. (자바8 부터 default 메소드와 static 메소드 사용가능)

🧷 인터페이스 안의 모든 상수는 public static final 타입니다. (생략 가능)

🧷 인터페이스 안의 모든 추상메소드는 abstract public 타입니다.

🧷 인터페이스 타입의 레퍼런스 변수 선언 가능합니다.

🧷 인터페이스를 상속받는 클래스는 인터페이스의 모든 추상 메소드를 반드시 구현해야합니다.

🧷 인터페이스는 다른 인터페이스를 extends 키워드로 상속받을 수 있으며, 다중 상속이 가능합니다.

🧷 클래스에서 인터페이스의 구현은 implement 키워드를 사용하여 구현할 인터페이스를 지정후, 추상 메소들르 모드 오버라이드 하여 내용을 완성해야 합니다.


📌 인터페이스의 장점

인터페이스를 사용하면 다중 상속이 가능할 뿐만 아니라 다음과 같은 장점을 가질 수 있습니다.

🧷 기능(메소드)의 구현을 강제함으로써, 대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 표준화가 가능합니다.

🧷 클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있으므로, 개발 시간을 단축할 수 있습니다.

🧷 클래스와 클래스 간의 관계를 인터페이스로 연결하면, 클래스마다 독립적인 프로그래밍이 가능합니다.

🧷 인터페이스를 구현한 클래스들을 하나의 인터페이스 타입으로 다룰 수 있습니다.



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


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

0개의 댓글