freeParksey
밥세공기
freeParksey
전체 방문자
오늘
어제
  • 분류 전체보기 (150)
    • JAVA (32)
      • 자바스터디 (21)
      • Java in action (6)
      • OOP (1)
      • test (2)
    • 알고리즘 문제 (51)
      • 백준 (49)
    • C (Atmega128) (7)
    • 인공지능 (11)
    • 운영체제 (8)
    • 디자인패턴 (5)
    • 잡다한것 (2)
    • 사용기 (3)
      • 도커 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 상속
  • 동작 파라미터화
  • 집합과 맵
  • Thread #JVM #자바스터디 #
  • 분류
  • dto 변환 위치
  • 운영체제
  • 자바스터디
  • generic
  • 딥러닝
  • 동적계획법
  • 백트래킹
  • 백준
  • 후기
  • 자바
  • 3주차
  • 알고리즘
  • dto 변환
  • Collection
  • 그리드
  • Thread 동작
  • 우테코
  • 스트림
  • 프리코스
  • 재귀기초
  • java
  • Python
  • Iterator
  • 백트랙킹
  • 우아한테크코스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
freeParksey

밥세공기

JAVA/자바스터디

상속 - 추상클래스

2022. 11. 17. 03:08

추상클래스


클래스에는 추상 클래스라는 것이 있습니다. 추상클래스는 하나의 미완성 클래스입니다.

 

미완성 클래스 ?


완성할 필요가 있는 클래스입니다. 

한마디로 일반 클래스는 '내가 가지고 있는걸 기본으로 추가해서 너가 써' 입니다. 그러나 추상클래스는  '내가 가지고 있는걸 기본으로 줄께 근데, 꼭 필요한게 있으니까 규격에만 맞게 너가 작성하고 반드시 추가해' 입니다.

 

즉 추상 클래스는 자식 클래스들에게 하나의 길을 알려주는 것과 같습니다.

또한 추상클래스는 추상 메서드를 가지고 있어야합니다.

 

 

추상 클래스 작성법

abstract class AbastractClass {

}

여기서 꼭 추상 클래스에 추상 메서드가 없어도 됩니다. 하지만 추상 메서드가 존재한다면 추상 클래스여야만 합니다.

이것을 제외하면 일반 클래스와 똑같습니다.

 

 

추상 메서드


작성해야할 기능을 추상화한 메서드입니다. 왜 미완성을 했을까요?

그 이유는 필요한 기능이 있지만 상속 받는 자식 클래스마다 동작 방식이 다르기 때문에 이와 같이 어떤 동작이 필요하다고만 선언해 놓는 것입니다.

 

 

추상 메서드 작성법

/**
 * 주석과 메서드 명을 통해 수행해야할 기능을 정리하여 작성 
 */
abstract void abstractMethod();

가장 중요한 것은 역시 어떤 동작이 필요한 주석일 수도 있겠지만, 이를 한 번에 알 수 있게 요약한 메소드 명이라 생각합니다.

또한 반환형과 파라미터를 통해 규격을 특정화 할 수 있습니다.

 

 

왜 사용할까?


위에서도 언급했지만 특정 동작에 대한 강제성을 부여하기 위해서입니다. 따라서 일반 클래스와의 차이 또한 강제성을 부여할지에 초점을 맞출 수 있습니다.

 

 

어떻게 사용할까?


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class Main {
    public static void main(String[] args) {
        List<Brand> brands = new ArrayList<>();
        brands.add(new ABCmart());
        brands.add(new Buckaroo());
        brands.add(new TBJ());
        
        brands.get(0).makeTagCode();
    }
}
 
abstract class Brand {
    int size;       // 사이즈
    int colorCode;  // 색상 코드
    int clothCode;  // 옷종류 코드
    int brCd;       // 브랜드 코드
 
    /**
     * 위 4가지를 사용하여 택 코드를 반환해라
     * @return
     */
    abstract String makeTagCode();
}
 
class ABCmart extends Brand {
    @Override
    String makeTagCode() {
        return ""; // ABC 마트 만의 코드만드는 규칙
    }
}
 
class Buckaroo extends Brand {
    @Override
    String makeTagCode() {
        return ""; // 버커루만의 코드만드는 규칙
    }
}
 
class TBJ extends Brand {
    @Override
    String makeTagCode() {
        return ""; // TBJ만의 코드만드는 규칙
    }
}
 
 
 

위와 같이 일반 상속을 한 클래스 처럼 사용할 수 있지만 추상메서드의 경우 반드시 구현해야한다.

'JAVA > 자바스터디' 카테고리의 다른 글

예외 처리  (0) 2022.11.19
인터페이스  (0) 2022.11.17
상속 - 다형성  (0) 2022.11.17
JAVA - 제어자  (0) 2022.11.14
상속  (0) 2022.11.13
    'JAVA/자바스터디' 카테고리의 다른 글
    • 예외 처리
    • 인터페이스
    • 상속 - 다형성
    • JAVA - 제어자
    freeParksey
    freeParksey
    Github: https://github.com/parksey

    티스토리툴바