JAVA

자바 추상 클래스

아이티프로 2023. 1. 24.
반응형

추상 클래는 직접 인스턴스를 생성할 수 없는 부모로서만 역할을 하며 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

댓글