Skip to Content
Suffering builds character

8. abstract 키워드

1. abstract 키워드

Animal.java
class Animal { void sing() { // ... } }

각 동물이 목소리를 내는 구체적인 코드는 각각의 동물이 가진 성격에 따라 달라질 수 있기 때문에 Animal 클래스로부터 메서드를 오버라이딩하여 각각의 방식대로 구현

Dog 클래스

Dog.java
class Dog extends Animal { void sing() { System.out.println("멍멍"); } }

Cat 클래스

Cat.java
class Cat extends Animal { System.out.println("야옹"); }

그런데 동물은 어떻게 울지?

class Animal { void sing() { // ?? } }

동물(Animal)이 우는 것에 대한 부분은 억지로 구현을 할 필요는 없을 것 같아서 별도로 구현을 하지 않기 위해 메서드의 구현부를 제거할 경우 컴파일 에러가 발생하게됨

public class Animal { void sing(); // ERROR. }

→ 기본적으로 class 내 작성된 메서드는 구현이 완료되지 않을 경우, 인스턴스가 생성되었을 때 해당 메서드가 호출되면 수행할 동작이 없기 때문에 필수적으로 구현해야함

Last updated on