목차
- Abstract class(추상 클래스)란?
핵심
- 추상 클래스는 다형성을 일부 보장하기 위해 사용한다. 마치
빈껍데기
Abstract class(추상 클래스)란?
추상 클래스는 추상 메서드가 있는 클래스를 의미한다. 추상 메서드는 구현부가 정의되어 있지 않은 불완전한 메서드를 의미한다. 그럼 왜 추상 메서드가 필요할까? 다형성을 보장하기 위해서이다. 다형성을 이용하면 부모 객체의 메서드는 실행될 일이 없다. 그렇기 때문에 구현부를 없애고 추상적으로(실제 기능하지 않는) 메서드로 정의해도 된다. 이렇게 하면 장점은 무엇일까? 자식 클래스에게 반드시 재정의를 시킨다. 반드시 재정의를 하면 다형성을 무조건 이용할 수 있다.
하지만 추상 클래스에는 추상 메서드만 있는 것이 아니라 구현 메서드도 존재한다. 그럼 이 구현 메서드는 자식 클래스 전체에 해당되는 메서드이다. 왜냐하면 부모 객체에 메서드를 정의한다는 건 자식 객체가 굳이 override하지 않아도 활용할 수 있는 메서드이기 때문이다.
추상 클래스는 구현 메서드를 구현할 수 있기 때문에 서로 기능이 비슷한 자식 클래스를 상속할 때 사용한다.
예시) TV 리모콘은 그 자체만으로는 기능이 없다. 반드시 TV와 함께 작동해야 한다. 그게 아니라면 다른 사물에는 사용할 수 없다. 즉, 그 자체만으로는 빈껍데기이다. 비어있다는 의미. 그러면 자식 클래스인 TV에서 리모콘이 명령하면 동작할 수 있도록 반드시 준비를 해야한다. 이 준비가 프로그래밍에서는 override를 하는 것이다.
-2019.12.31-
예시
// abstract class
public abstract class Animal {
public abstract void eat();
public void move() {
System.out.println("Animal is moving...");
}
}
// sub class
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("Sound of cat is ...");
}
}
'프로그래밍 > Java' 카테고리의 다른 글
19.12.25) Java - Interface (0) | 2019.12.25 |
---|---|
19.12.24) Java - abstract class VS interface (0) | 2019.12.24 |
19.12.24) Java - message polymorphism(다형성) (0) | 2019.12.24 |
19.12.24) Java - Object Casting(객체 형 변환) (0) | 2019.12.24 |
19.12.23) Java - Override(재정의) (0) | 2019.12.24 |