티스토리 뷰
▶마커 인터페이스(Marker Interface)에 대해 알아보자
🔎 마커 인터페이스(Marker Interface) ?
마커 인터페이스란
인터페이스 내부에 상수도, 메소드도 없는 인터페이스를 말합니다.
아무 내용도 없어서 쓸모가 없어보이지만,,
마커 인터페이스는 클래스들을 그룹화하기 위한 목적으로 사용하는데요.
📌 예시 코드
package markerInterfaceTest;
public class Animal {;}
public class Bear extends Animal {;}
public class Cow extedns Animal {;}
public class Dog extends Animal {;}
public class Tiger extends Animal {;}
위와 같이 Animal이라는 부모 클래스를 두고 4가지 동물 클래스에 상속해 주었는데요.
이때 만약에 육식동물, 초식동물, 잡식동물로 분류를 하고 싶다면 어떻게 해야할까요?
이때 바로 그룹화를 하기 위해 마커 인터페이스를 사용하는 것인데요.
package markerInterfaceTest;
public interface CarnivoreMarker {;} // 육식동물을 그룹화할 마커 인터페이스
public interface HerbivoreMarker {;} // 초식동물을 그룹화할 마커 인터페이스
이렇게 마커 인터페이스를 선언해주고 상속해주었던 코드를 수정합니다.
package markerInterfaceTest;
public class Animal {;}
public class Bear extends Animal implements CarnivoreMarker {;}
public class Cow extedns Animal implements HerbivoreMarker {;}
public class Dog extends Animal {;}
public class Tiger extends Animal implements CarnivoreMarker {;}
이제 메인 메소드에서 그룹화가 잘 되었는지 확인해봅시다.
package markerInterfaceTest;
public class Test {
public void checkKinds(Animal[] animals) {
for (int i=0; i<animals.length; i++) { // 반복문을 돌면서 타입을 확인한다.
if(animals[i] instanceof CarnivoreMarker) {
System.out.println("육식동물");
} else if (animals[i] instanceof HerbivoreMarker) {
System.out.println("초식동물");
} else {
System.out.println("잡식동물");
}
}
}
public static void main(String[] args) {
Animal[] animals = {
new Cow(),
new Dog(),
new Tiger(),
new Bear()
};
new Test().checkKinds(animals);
}
}
순서대로 잘 출력된 것을 확인할 수 있습니다.
728x90
LIST
'백엔드 > Java' 카테고리의 다른 글
[Java] 자바의 함수형 인터페이스(Functional Interface) - 추상 메소드가 오직 한 개인 인터페이스 (0) | 2023.02.05 |
---|---|
[Java] 자바의 다중상속 그리고 모호성(ambiguity)에 대하여 (0) | 2023.02.05 |
[Java] 자바 어댑터(Adapter) 패턴 (0) | 2023.02.03 |
[Java] 내부 클래스(Inner Class) & 익명 클래스(Anonymous Class) (0) | 2023.02.02 |
[Java] 인터페이스(interface)에 대해 알아보자 (0) | 2023.02.02 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스타일 컴포넌트 styled-components
- 자바스크립트 기초
- 머신러닝
- 파이썬
- react
- JSP
- 리액트
- Python
- 타입스크립트
- rtl
- styled-components
- 데이터분석
- 인프런
- 자바스크립트
- 프론트엔드 기초
- testing
- next.js
- 프론트엔드 공부
- jest
- HTML
- react-query
- 리액트 훅
- frontend
- 프로젝트 회고
- TypeScript
- 딥러닝
- CSS
- 프론트엔드
- 디프만
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함