● 오늘의 ISSUE
Java 추상 클래스의 개념과 instanceof가 뭔지 알아보자
● 추상클래스
◈. 추상 클래스란?
- 비슷한 필드와 메서드를 공통적으로 추출해 만들어진 클래스다
- 예시)
'마우스'를 만드는 제조사는 여러개이다. A,B,C,D제조사는 각 제조사만의 스타일대로 마우스를 제작하고 소비자들에게 제품을 출시한다. 여기서 A제조사는 마우스를 누를때 마다 불빛이 들어온다. B제조사는 마우스를 누를때 소리가 난다. C제조사는 마우스를 누를때 강하게 눌러야만 반응한다. 여기서 이 마우스들 간에 공통점이 있다. 바로 마우스를 누른다 라는 액션, 즉 메서드가 공통적이다. 그럼 이 메서드를 추출해서 추상클래스 안에 두면 된다.
◈. 추상 클래스를 써야하는 이유
- 필드와 메서드 이름을 통일하여 유지보수성을 높이고 통일성을 유지
- 강제로 주어지는 필드와 메서드를 가지고 나만의 스타일대로 구현만 하면 된다. 설계 시간이 절약된다
- 소스코드 작성 시 공통적인 소스들을 묶어주면서 깔끔하게 코딩할 수 있다.
◈. 사용 조건
- abstract를 사용하여 선언
- 추상 메서드가 없어도 선언 가능
- 자식 클래스에 의해서만 완성 가능
- 오버라이팅 필수(추상 메서드 오버라이딩)
- 부모클래스가 추상클래스여도 자식클래스는 추상클래스가 아니여도된다.
◈. 사용 문법
public abstract class Shap { // 추상 클래스
private String type;
public Shap(String type) {
this.type = type;
}
public abstract void draw(); //추상 메소드
}
정리
- 다른 소스의 영향도를 적게 가져가면서 변화에는 유연하게 만들기 위해 추상클래스를 사용하기도 한다. 규격에 맞게 소스가 구현되어 있기 때문에 해당 규격에 대한 구현부만 수정하면 손 쉽게 수정이 가능하기 때문이다.
TIP
*** 추상 메서드 : 구현 내용은 없고 이름만 껍데기만 있는 메서드
>> 일반적으로 하나 이상의 추상 메소드를 포함하는 클래스를 가리켜 추상 클래스라고 정의하곤 한다.
● instanceof
◈. instanceof란
- 객체 타입을 확인하는 연산자이다.
- 형변환 가능 여부를 확인하며 true / false로 결과를 반환한다.
◈. instanceof는 언제 사용되는가
- 주로 상속 관계에서 부모객체인지 자식 객체인지 확인하는 데 사용된다.
◈. instanceof 사용 방법
- (대상 객체) instance of (클래스 이름) : true or false
예시)
- inkedList의 instance인지 true/false 결과를 리턴하는 연산자로 보임
Queue<Integer> q = new LinkedList<>();
if (q instanceof LinkedList) {
System.out.println("true");
}
TIP
*** instanceof 연산자는 기능적으로는 아무런 문제가 없지만,
instanceof를 사용하는 코딩 습관은 좋지 못하다는 이야기가 있습니다.
'JAVA' 카테고리의 다른 글
(JAVA) 예외처리 알아가기 (0) | 2024.09.20 |
---|---|
(JAVA) 다중상속과 인터페이스 알아보기 (0) | 2024.09.20 |
(JAVA) 접근 제어자와 오버라이드 개념 (0) | 2024.09.20 |
(JAVA) 기본형 & 참조형 매개변수, 인스턴스 멤버와 클래스 멤버 (0) | 2024.09.20 |
(JAVA) 예외처리 자세히 알아보기 2 (0) | 2024.09.19 |