추상 클래스는 추상 메서드를 하나라도 가지고 있는 클래스를 말한다.
추상 메서드는 '메서드의 본체가 완성되어 있지 않은 미완성 메서드'를 말한다.
상속을 목적으로 사용하며 자식 클래스에서 오버라이딩을 강제한다.
1. 추상 클래스의 특징
1. 객체를 직접 생성할 수 없다.
힙 메모리에 생성되는 객체는 내부 요소가 미완성된 상태로 들어갈 수 없기 때문이다.
따라서 추상 클래스를 상속하는 자식 클래스는 부모에게 상속받은 추상 메서드를 반드시 완성(오버라이딩) 해야 한다. (강제성을 부여한다.)
만약, 오버라이딩하지 않을 경우 상속 받은 추상 메서드를 포함하고 있기 때문에 자식 클래스도 추상클래스가 된다.
2. 추상 메서드는 선언부만 존재하며 구현부는 존재하지 않는다.
이 구현부를 자식 클래스에서 오버라이딩해서 사용한다.
2. 추상 클래스의 객체 생성 방법 2가지
자식 클래스의 생성 여부에 따라 크게 2가지 방법이 있다.
1. 일반 클래스로 상속해 객체 생성
abstract class Animal{
public abstract void cry(); //추상 메서드 {}가 없다.
}
class Cat extends Animal{
@Override
public void cry() {
System.out.println("야옹스");
}
}
class Dog extends Animal{
@Override
public void cry() {
System.out.println("멍멍");
}
}
public class Main {
public static void main(String[] args) {
Animal cat = new Cat();
Animal dog = new Dog();
cat.cry();
dog.cry();
}
}
추상 클래스 Animal을 상속받는 자식 클래스 Cat, Dog 클래스를 만들어서 객체를 생성했다.
장점 : 여러 개의 객체를 생성해야 할 경우 좋다.
단점 : 자식 클래스를 정의해야 한다.
2. 익명 이너 클래스 사용
public class Main {
public static void main(String[] args) {
//익명 이너 클래스
Animal cat = new Animal() {
@Override
public void cry() {
System.out.println("야옹스");
}
};
cat.cry(); //야옹스 출력
장점 : 자식 클래스를 정의하지 않아도 된다.
단점 : 일회성 이기 때문에 여러 객체를 만들 경우에는 불편하다.
+ 이벤트, 안드로이드 등에서 자주 쓰이는 방법이라고 한다.
인터페이스를 이해하기 위해서 추상 클래스는 꼭 알고 넘어가야한다.
추상 메서드를 통해 자식 클래스에게 오버라이딩을 강제하는 기능이라고 알아두자.
참고 문헌 : Do it! 자바 완전정복
'Java > 자바 이론' 카테고리의 다른 글
[Java] 자바 내부 클래스 4종류 (Inner Class) (0) | 2022.07.05 |
---|---|
[Java] 자바 인터페이스(Interface)란? (0) | 2022.07.05 |
[Java] 메서드 오버로딩과 오버라이딩 (1) | 2022.06.30 |
[Java] 자바 super 키워드 & super() 메서드 (0) | 2022.06.30 |
[Java] 자바 클래스 상속의 장점과 특징 (2) | 2022.06.30 |