추상 클래스란?
: 공통적인 기능을 부모 클래스에로 정의해서 상속받되 일부 공통 기능은 자식 클래스에서 구현하도록 강제하는 것.
추상 클래스의 특징
- 구체적이지 않고 일반화된 클래스
- 객체들 간의 공통적인 기능을 정의한 클래스
- 기능의 구체적인 내용 구현은 자식 클래스에게 일임
- 추상 클래스는 단독으로 인스턴스를 만들 수 없음
- 상속을 통해 자식클래스에서 인스턴스를 생성
추상 클래스 선언하기
- 클래스 선언 부에 abstract 키워드 사용
- 추상 클래스의 멤버 : 필드, 생성자, 메소드
아래는 추상 클래스의 대표적인 예이다.
public abstract class Student {
private final String name;
Student(String name){
this.name = name;
}
public String getName() {
return this.name;
}
abstract void study(String subject);
}
쉽게 말하면 추상 메소드를 가지고 있는 클래스를 추상 클래스라고 칭한다. 위의 코드에서 알 수 있듯이, 추상 메소드란 구현부가 존재하지 않는 메소드를 의미하며, 이 추상 클래스를 상속받는 클래스가 이 추상 메소드를 강제로 Override해야한다.
아래는 추상 클래스인 Student를 상속받은 클래스를 보여준다.
public class JavaStudent extends Student{
JavaStudent(String name){
super(name);
}
@Override
void study(String subject) {
System.out.println("추상 클래스를 Override");
}
}
위와 같이 추상 메소드인 study를 자식 클래스가 강제로 Override하여 어노테이션까지 사용한 것을 알 수 있다.
이와같이 "공통 기능"을 추상화하여 선언한 클래스를 추상 클래스라고 한다.
'Java' 카테고리의 다른 글
[Java/자바] 싱글톤 패턴? 싱글톤 컨테이너? 그게 뭔데!! (0) | 2023.07.30 |
---|---|
[Java/자바] 문자열을 "+"로 split 해보자(BOJ 1541 잃어버린 괄호) (0) | 2023.07.26 |
[자바/Java] 오버라이딩과 오버로딩(OverRiding and OverLoading) (0) | 2023.07.04 |
[Java/자바] 자바와 인텔리제이 설치하기(Window/Mac) (0) | 2023.07.03 |
[Java/자바] 자바란? (0) | 2023.07.03 |