Java/Java 활용 개념 정리

[Java] 인터페이스 활용(100% 다형성 보장!)

Dev dreamer 2023. 2. 4. 17:20

 

 

 

💡 1. 인터페이스의 경우 100% 다형성을 보장한다.


 

 

인터페이스는 모든 메서드가 추상 메서드로 이루어 져 있다.

구현 메서드를 가지고 있을 수 없다. 반드시 무조건 100% 추상 메서드로 구성해야 한다.

 

그리고 interface 는 class 형태가 아니다! 그래서 다중상속이 가능하다.

 

인터페이스는 메서드의 경우는 abstract 키워들 써주고(생략이 가능하다.)

 

클래스의 경우에는 interface를 써준다.

 

자식 객체의 경우 extends를 써주는 것이 아닌 implement 를 써준다.

 

자식 클래스의 경우도 마찬가지로 메서드들은 abstract를 생략해 줘도 된다.

 

❗ 인터페이스는 구현된 메서드를 가지고 있을 수 없다.

 

 반드시 구현부가 없는 추상 메서드만 가지고 있어야 한다.

 

interface 클래스의 경우

abstract 를 생략해도 된다.

 

 

interface 클래스인 RemoCon 클래스를 상속받은 자식 클래스들은

반 드 시 !! 해당 추상메서드 들이 구현되어 있을 것이다.

반드시 부모클래스의 메서드들을 재정의를 해야하므로

chUp() chDown() internet() 의 추상 메서드들이 재정의 되어야 한다.

 

그 결과 구현된 클래스 들을 보면 TV와 Radio에 각 기능이 구현된것을 확인할 수 있다.

 

따라서 부모가 해당 메서드로 명령을 자식 클래스에 내렸을 때

 

반드시 동작한다. 즉 100% 다형성이 보장 된다.

 

추상 클래스와 인터페이스는 자식클래스와 반드시 연결지어 사용해야한다.

이 특징을 이용해서 외부의 API를 사용할 때 부모(추상or인터)를 이용해서 자식 클래스를 동작시킨다.

 

 

 

💡 2. 코드로 공부하는 interface!


 

인터페이스 내부의 메서드는 100% 추상 메서드이기 때문에 abstract 를 생략해도 된다.

 

추상 클래스와 마찬가지로 자기 자신 인터페이스의 객체를 선언할 수 없다.

 

그래서 반드시 자식클래스와 만나서 사용해야만 한다.

 

부모가 자식에게 명령을 내려서 다형성의 기능을 활용하는 것이 주 목적이다.

 

TV를 RemoCon 이라는 기능으로 구현(implements)하고자 하면

TV에서 빨간줄이 처진 곳에 마우스를 가져가면 Add를 통해 구현해야하는 추상 메서드들이 생긴다.

그러면 해당 추상 메소드들이 화면에 구현된다.

 

아니면 구현해야하는 빈 공간에 오른쪽 마우스 클릭 Source ➡ Override/Implement 클릭

이러한 방식으로도 화면에 구현이 가능하다.

 

메서드들이 화면에 구현되었으면 각 클래스의 특징에 맞게 재정의(override) 해주면 된다.

재정의 한 값들을 각각 실행시켜보면 서로 클래스에 맞게 재정의된 결과값이 나온다.

 

🔍 인터페이스는 추상 메서드 말고 다른 값은 못오나요?

 

상수를 선언이 가능하다.

 

인터페이스 내부에 변수값을 선언하면

public static final or public  final static 이 생략되어있다.

보통은 final static 만 생략하기도 한다.

인터페이스는 기본적으로 객체를 생성할 수 없기 때문에

 

객체에 접근하지 않고 바로 데이터 값을 이용하는 방법???

static 을 통한 접근 방법이 있다.

 

ex) RemoCon.MAXCH  RemoCon.MINCH 등등

 

현재 채널이 70이고 

40번의 chUp 메서드를 작동시킬 때 max 채널 까지만 채널을 작동시키기 위해 위와 같은 코드를 넣을 수 있다.

 

이때 최대  MAXCH 는 public final static int MaxCH 로 RemoCon 인터페이스에 선언된 변수이다.

 

이처럼 인터페이스의 기능을 구현하고 구현하는데 필요한 변수등을 static에 올려서 사용한다.

 

 

 

 

💡 3. 추상 클래스와 인터페이스


 

  abstract class interface
공통점 🔍 다형성을 보장하기 위해서 등장했다.

🔍 객체를 생성 할 수 없다.(new 불가능!)

🔍 하위클래스에 의해 구현되어야 한다.(override 재정의 필수)

🔍 부모(상위클래스)의 역할로 사용한다.(upcasting으로 객체를 생성)

🔍 추상 메서드를 가진다.
차이점 ⚡ 서로 기능이 비슷한 클래스의 공통 부분을 묶을때 사용한다.

 구현 메서드와 추상 메서드를 함께 가질 수 있다.

 extends keyword를 사용한다.

 구현 메서드를 가질 수 있다.
⚡ 서로 기능이 다른 클래스의 공통 부분을 묶을때 사용한다.

⚡100% 추상 메서드로 이루어진다.

⚡ implement keyword 사용한다.

⚡구현 메서드를 가질 수 없다.

⚡ 다중 상속 형태를 지원한다.

⚡ final static 멤버변수를 가질 수 있다.

 

 

 

Java 관련 개념을 알려주실 때 그 내부 동작이 어떻게 구현되는지 자세하게 알수 있는 강의입니다.

출처: Java TPC (생각하고, 표현하고, 코딩하고) 대시보드 - 인프런 | 강의 (inflearn.com)