티스토리 뷰

이것이 자바다 1권 8장 인터페이스 TIL 

 

🔥 인터페이스의 역할 

 

  • 객체의 사용방법을 정의한 타입이다. 
  • 객체의 교환성을 높여주기 때문에 다형성을 구현하는 매우 중요한 역할을 한다. 
  • Java 8 에서 인터페이스의 중요성은 더욱 커졌다. Java 8의 람다식은 함수적 인터페이스의 구현 객체를 생성하기 때문이다. 

 

🔥 인터페이스를 사용하는 이유?

 

  • 개발 코드를 수정하지 않고, 사용하는 객체를 변경할 수 있도록 하기 위해서이다.
  • 인터페이스는 하나의 객체가 아니라 여러 객체들과 사용이 가능하므로 어떤 객체를 사용하느냐에 따라서 실행 내용과 리턴값이 다를 수 있다.
  • 따라서 코드 변경 없이 실행 내용과 리턴값을 다양화할 수 있다는 장점을 가진다.

 

 

🔥 인터페이스 선언 

 

  • class 키워드 대신에 interface 키워드를 사용한다. 
[public] interface 인터페이스명 {...}

 

  • 클래스는 필드, 생성자, 메소드를 구성 멤버로 가지는데 비해, 인터페이스는 상수와 메소드만을 구성 멤버로 가진다.

  • 인터페이스는 객체로 생성할 수 없기 때문에 생성자를 가질 수 없다. 

  • Java 8 부터 디폴트 메소드와 정적 메소드도 선언이 가능하다.

interface 인터페이스명{
	//상수 (반드시 초기값 대입)
    타입 상수명 = 값;
    
    //추상 메소드
    타입 메소드명(매개변수, ...);
    
    //디폴트 메소드
    default 타입 메소드명(매개변수, ...) {...}
    
    //정적 메소드 (객체가 없어도 인터페이스만으로 호출 가능)
    static 타입 메소드명(매개변수) {...}
}

 

 

🔥 인터페이스 구현 클래스

 

public class 구현클래스명 implements 인터페이스명{
	//인터페이스에 선언된 추상 메소드의 실체 메소드 선언
}

 

  • 인터페이스의 모든 메소드는 기본적으로 public 접근 제한을 갖기 때문에 public보다 더 낮은 접근 제한자를 작성할 수 없다.  ("Cannot reduce the visibility of the inherited method" 컴파일 에러)

  • 만약 추상 메소드에 대응하는 실체 메소드를 구현 클래스가 작성하지 않으면, 구현 클래스는 자동적으로 추상 클래스가 된다. 그렇기 때문에 클래스 선언부에 abstract 키워드를 추가해야 한다.

public abstract class Television implements RemoteControl{
	public void turnOn(){...}
    public void turnOff() {...} 
}

 

 

🔥 다중 인터페이스 구현 클래스 

 

public class 구현클래스명 implements 인터페이스 A, 인터페이스 B {
	//인터페이스 A에 선언된 추상 메소드의 실체 메소드 선언
    //인터페이스 B에 선언된 추상 메소드의 실체 메소드 선언 
}

 

  • 다중 인터페이스를 구현할 경우, 구현 클래스는 모든 인터페이스의 추상 메소드에 대해 실체 메소드를 작성해야한다.

 

 

🔥 인터페이스 사용

 

  • RemoteControl 인터페이스로 구현 객체인 Television과 Audio를 사용하려면 다음과 같이 RemoteControl 타입 변수 rc를 선언하고 구현 객체를 대입해야 한다. 
RemoteControl rc;
rc = new Television();
rc = new Audio();

//추상 메소드 사용
rc.turnOn(); //=> Television의 turnOn() 실행
rc.turnOff(); //=> Television의 turnOff() 실행

 

 

>> 타입 변화과 다형성 부분은 2편에서!

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30