본문 바로가기
Programming/JAVA(eclipse)

java 9일차 _04. 추상클래스

by yoon9i 2024. 3. 20.

4. 추상클래스 ( abstract class )
1) 문법:
public abstract class 클래스명 {

}

2) 구성요소:
- 변수
- 생성자
- 메서드 ( concrete method ) 
: { } 를 가져서 기능이 정해짐.

ex)
         public void a ( ) {
   실행문;
}

- 추상메서드 ( abstract method ) 
: { } 를 지정안함. 기능이 미지정된 상태. 나중에 지정됨.

 ex)
         public abstract void a ( ); // abstract 키워드 필수.

=> 추상클래스는 추상 메서드를 가질수도 있다.
     추상 메서드를 가지면 반드시 추상클래스로 만들어야 된다.

package exam15_추상클래스;

// 추상 클래스
abstract class AAA {
	
	int n; // 변수
	public AAA() {} // 생성자
	public void method() {} // 메서드(일반 메서드, concrete method)
	
	// 추상메서드
	public abstract void a(); // {} 가 없어서 아직 어떤 작업을 할지 미지정된 메서드
	
}// end AAA

// 추상클래스는 자식 클래스를 통해서만 인스턴스화 될 수 있다. ( * )
// 이때 자식 클래스는 반드시 추상메서드를 overriding 해야되는 제약이 있다.
class BBB extends AAA {// 재정의하지 않으면 오류가발생

	@Override
	public void a() {
		System.out.println("a 메서드");
	} 
	
}

public class AbstractTest {

	public static void main(String[] args) {
		
//		AAA x = new AAA(); // 추상클래스는 객체 생성x
		
		//자식 클래스를 통해서 추상 클래스의 요소를 사용할 수 있다.
		BBB y = new BBB();
		System.out.println(y.n);
		y.method();
		y.a();
		
		// 다형성을 적용한 BBB 객체생성이 가능하다.
		AAA y2 = new BBB();
		System.out.println(y2.n);
		y2.method();
		y2.a();
	}

}