[JAVA] Abstract 추상클래스

고민정·2024년 4월 4일

JAVA

목록 보기
13/32
post-thumbnail

🎇 Abtract 와 E.g.

우리는 추상클래스를 같은 양식을 두고 보다 더 구체화하고 싶을 때 사용합니다.

예를 들어 '새' 라는 단어를 던져줍니다.
그러면 사람마다 각자 생각하는 새의 이미지, 새의 종류는 다를 것 입니다.
그렇기 때문에 우리는 '새' 라는 추상 클래스를 만들고 추상의 새가 우는 소리에 대한 birdSound( ) 라는 미완성 추상클래스를 만들어둡니다. 그리고 메서드를 미완성 시킨채로 부모로 상속시킵니다.

public abstract class Bird{
	//uncomplete method
    public abstract void birdSound();

	// Normal method can also be in abstract class
    public void feature(String bird){
        System.out.println("The " + bird + " is cute.");
    }
}
추상클래스를 만드는 방법은 class 앞에 abstract, 원하는 메서드의 리턴형 앞에 abstract 를 적어주면 됩니다.

미완성 메소드를 완성시키는 것은 추상클래스를 상속받은 자녀 클래스입니다.
상속받은 자녀 각각 새에 대한 생각이 다르기 때문에 각자의 입맛대로 완성시킬 수 있습니다.

public class Duck extends Bird{
    @Override
    public void birdSound() {
        System.out.println("꽥 꽥");
    }
}

public class DuckExam {
    public static void main(String[] args) {
        String bird = "꽥꽥이";
        Duck duck = new Duck();
        duck.birdSound();
        duck.feature(bird);
    }
}


🎇 Abstract 특징

메서드가 하나라도 추상 메서드이면 클래스도 추상 클래스가 됩니다.

위의 class Bird 를 보면 알 수 있듯이 추상클래스 내부에는 일반 메서드도 구현 가능합니다.

추상클래스는 구체적이지 않기 때문에 상속 중 부모의 역할은 가능하나 객체를 생성할 수 는 없습니다.
아래 사진을 보면 Bird 객체가 생성되지 않고 오류가 뜨는 것을 확인 할 수 있습니다.

0개의 댓글