Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- DTO
- git
- stringbuffer
- @NoArgsConstructor
- 캡슐화
- 깃허브
- 파이썬
- HTML
- html tag
- 자바
- lv1
- 에러
- 부스트코스
- 상속
- SQL
- Codeup
- 브랜치
- 기본생성자
- @builder
- 알고리즘
- @AllArgsConstructor
- java
- 부트캠프
- entity
- 프로그래머스
- github
- Python
- HashSet
- 코드업
- CRUD
Archives
- Today
- Total
잉?
[Java] 추상클래스란? abstract? + extends와 오버라이딩 본문
항상 나에게 명확한 의미로 다가오지 않던 추상클래스.
이름처럼 나에겐 추상적인 존재였다.
하지만 지금은 어느 정도 이미지가 잡힌 듯하여 적어보려 한다.
클래스는 설계도라 할 수 있다.
객체라는 부품을 가지고 기능을 만드는 그 설계도.
그렇다면 추상클래스는?
추상클래스는 미완성 설계도라 할 수 있다. 이 추상클래스를 완성하도록 상속을 통해 자식클래스에 넘겨준다.
추상클래스는 자식클래스에서 공통적인 필드나 메서드를 추출해서 만들 수 있다.
또한 abstract 키워드를 사용해 선언할 수 있다.
예를 들면 사칙연산을 하는 기능을 만들고자 한다면 연산에 공통적으로 필요한 Operation이라는 클래스를 만들고, 그 안에 operate라는 메서드와 사칙연산에 필요한 최소한의 두 개의 수(firstNumber, secondNumber)를 추출해서 만드는 것이다.
이 메서드를 자식클래스에서 오버라이딩하여 +, -, *, / 같은 더 세세하고 완성된 설계도를 작성하는 것이다.
public abstract class AbstractOperation { // 추상클래스
public abstract double operate(int firstNumber, int secondNumber); // 추상메서드
// 추상메서드는 정의만 할 뿐, 실행 내용{}은 가지고 있지 X → 실행 내용은 자식클래스에서)
}
추상 클래스를 상속받기 위해서는 extends라는 키워드를 사용하여야 한다.
extends를 통해 클래스를 확장시킬 수 있다. 또한 하나의 클래스만 상속 가능
public class AddOperation extends AbstractOperation{ // AbstractOperation 클래스를 extends한다.
@Override
public double operate(int firstNumber, int secondNumber){ // 상속받은 클래스의 메서드를 오버라이딩
return firstNumber + secondNumber;
}
}
오버라이딩? 메서드의 동작만 재정의하는 것.
public 리턴자료형 메서드명 (자료형 변수명) {!!! 이 부분 동작만 재정의 가능!!! }
이렇게 추상클래스를 알아봤다.
추상클래스는 말 그대로 추상적인 존재였다. 미완성인 설계도.
추상클래스를 사용하면 상속을 통해 같은 필드와 메서드명을 이용하기에 가독성이 좋고,
유지보수에 용이할 것이다.
'자바(Java)' 카테고리의 다른 글
[Java] static이란? (클래스변수, 인스턴스변수) (0) | 2023.06.02 |
---|---|
[Java] Object클래스, equals() 알아보기 (0) | 2023.05.26 |
[Java] 컬렉션(Collection) 알아보기 + Objects.equals() (2) | 2023.05.23 |
[Java] Scanner 클래스의 메소드 next(), nextLine() 차이 알아보기 + 주의점! (0) | 2023.05.22 |
[Java&eclipse] 너무 나도 쉬운 Java&eclipse 다운로드 (설치 및 환경 설정까지) (0) | 2022.03.13 |
Comments