반응형
추상 클래스는 직접 인스턴스를 생성할 수 없는 부모로서만 역할을 하며 abstract를 맨앞에 붙여 생성한다.
추상 메소드란, 내용이 없는 빈 메소드로 리턴 타입 앞에 abstract라는 키워드를 붙여 선언한다.
자식 클래스는 추상클래스를 상속받아서 확장할 때 반드시 추상 메소드는 오버라이드해서 내용을 구현해야 한다.
추상클래스는 스스로는 추상적인 존재일 뿐 실체로서 동작할 수 없고 상속받는 객체가 가져야 하는 틀(형상)을 강요할 뿐이다. (ex 포유류>인간, 포유류>곰)
package javaStudy;
abstract class Bird{
public abstract void sing(); //추상 메소드
public void fly(){
System.out.println("날다.");
}
}
class Duck extends Bird{
//오버라이드해서 해당 추상메소드를 실제 구현해야 한다.
@Override
public void sing() {
System.out.println("꽥꽥!!");
}
}
public class DuckExam {
public static void main(String[] args) {
Duck duck = new Duck(); //Bird클래스는 인스턴스를 생성할 수 없고, Duck클래스 인스턴스를 생성
duck.sing();
duck.fly();
//Bird b = new Bird();
}
}
추상클래스 Bird를 생성하고 추상메서드 sing()을 작성한다. 추상메서드 sing()은 {}이하 실체가 없다.
Bird클래스를 상속받아 Duck클래스를 구현한다.
sing()메서드는 상속받았지만 추상메서드로 @Override 오버라이드 어노테이션으로 오버라이드해서
sing()를 구현해야 한다.
Duck duck = new Duck(); Bird클래스를 상속받은 duck객체는
duck.sing(); 노래도 부르고
duck.fly(); 날라다닌다.
반응형
'JAVA' 카테고리의 다른 글
자바 오버로딩 (0) | 2023.01.24 |
---|---|
자바 클래스 상속 (0) | 2023.01.24 |
super키워드 - 부모 클래스 접근 (0) | 2023.01.24 |
오버라이드 & 클래스 형변환 (1) | 2023.01.24 |
자바 인터페이스 (0) | 2023.01.24 |
댓글