package pm;

public class Exam6 {

	public static void main(String[] args) {
		// 추상클래스
		/* 추상 매서드는 매서드의 본체가 없는 미완성의 이름뿐인 매서드
		 * 매서드의 기능을 정의하는 중괄호 안이 비어있는 것이 아니라 아예 중괄호가 없고
		 * 아예 내용을 구성하지 않고 세미콜론 (;)으로 끝남
		 * 이러한 추상 매서드를 포함하기 위한 클래스는 반드시 추상 클래스로 정의해야 함
		 * 
		 * 추상 클래스의 특징
		 * 추상 클래스는 미완성 매서드이기 때문에 객체를 생성할 수는 없음
		 * 문법적으로 생각하면 A a = new A(); 생성자 자체를 호출할 수도 없음
		 * 붕어빵기계로 생각해보면 추상클래스는 붕어빵 기계의 부품의 하나로 생각할 수 있음
		 * 붕어빵 기계의 부품으로는 붕어빵을 생성할 수는 없지만 붕어빵 기계는
		 * 붕어빵 부품으로 만들어지고 최종적으로 붕어빵 기계로 붕어빵을 만들 수 있음
		 * 
		 * 추상 클래스로는 직접 객체를 생성할 수는 없지만 이 추상클래스를 상속한
		 * 자식클래스를 생성하면 그 자식 클래스로는 객체를 생성할 수 있음
		 * 그리고 이렇게 생성된 객체 내부에는 부모 클래스의 추상 매서드가 구현되어 있을 수밖에 없음
		 * 
		 * abstract class A {			class B extends A{		A a = new B();
		 * 	abstract void abc();			void abc(){			B b = new B();
		 * }								실제 구현 내용}
		 * 									}
		 * 객체 생성은 불가능					객체 생성 가능
		 * 
		 * 추상 클래스를 상속하는 자식 클래스는 부모에게 상속받은 미완성 제목 뿐인 매서드를 반드시 완성(오버라이딩)해야만 함
		 */	

	}

}
