(JAVA) 추상클래스의 개념 + instanceof 이해하기

2024. 9. 20. 08:54·JAVA

● 오늘의 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
'JAVA' 카테고리의 다른 글
  • (JAVA) 예외처리 알아가기
  • (JAVA) 다중상속과 인터페이스 알아보기
  • (JAVA) 접근 제어자와 오버라이드 개념
  • (JAVA) 기본형 & 참조형 매개변수, 인스턴스 멤버와 클래스 멤버
lastdove
lastdove
lastdove 님의 블로그 입니다.
  • lastdove
    lastdove 님의 블로그
    lastdove
  • 전체
    오늘
    어제
    • 분류 전체보기 (80)
      • Spring (16)
      • JAVA (17)
      • JAVA 알고리즘 (20)
      • Project (5)
      • SQL 문제풀이 (17)
      • Git&Linux (2)
      • Web development(입문) (2)
      • Sparta (1)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
lastdove
(JAVA) 추상클래스의 개념 + instanceof 이해하기
상단으로

티스토리툴바