728x90
추상 메서드, 클래스는 왜 쓰는 것일까?
예제 먼저 보자.
package polymorphism;
class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
void bark() // 일반 오버라이딩
{
System.out.println("동물!동물!");
}
}
package polymorphism;
public class Dog extends Animal{
public Dog(String name) {
super(name);
}
@Override
void bark() {
System.out.println("왈왈");
}
}
과연 Animal의 bark메서드의 내용을 작성해야할까?
어차피 하위 클래스인 Dog에서 오버라이딩을 진행할 것이다.
그렇다면 bark 메서드를 써야한다고 명시 정도만 해주는 것은 어떨까?
그 개념이 바로 추상 메서드, abstract 키워드가 필요한 순간이다.
package polymorphism;
abstract class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
abstract void bark(); // 추상 메서드
}
상위 클래스에서 추상 메서드는 선언만 한다.
어차피 하위 클래스에서 오버라이딩 할거니까.
추상 메서드를 선언할 때엔 앞에 abstract 키워드를 꼭 넣어야 한다.
또한 클래스 선언할 때에도 추가해야 한다.
bark 메서드를 오버라이딩 하지 않으면 오류가 생김으로써 프로그래머가 더욱 안전하게 코드를 짤 수 있도록 도와준다!
또한 추상클래스 타입으로 인스턴스화는 불가하다.
728x90
'JAVA' 카테고리의 다른 글
백준 알고리즘 17255 (0) | 2024.03.29 |
---|---|
JAVA TIL - 04 Java.base 모듈 - java.lang (0) | 2024.03.15 |
JAVA TIL - 03 JVM (0) | 2024.03.12 |
JAVA TIL - 01 다형성 (0) | 2024.03.12 |