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

+ Recent posts