추상클래스(abstract)

YongJun·2023년 9월 8일

JAVA

목록 보기
16/24
post-thumbnail

추상클래스

  • Sub class 제어
  • 추상화 작업
  • 메소드에 { }가 없는 메소드를 추상메소드라고 한다.
    추상메소드에는 abstract 라는 키워드를 써야 한다.
    추상메소드는 { }없이 ;를 써야한다.
  • 추상 클래스를 상속받는 자식 클래스에서는 반드시 추상 메소드를 재정의하여야 한다.(추상메소드는 반드시 Sub Class에서 Override를 꼭 해 주어야 한다, Override를 안하면 Sub Class 마저도 abstract 가 되어야 한다)
  • 추상메소드가 있는 클래스는 반드시 추상클래스이어야 한다.
  • 추상메소드가 없는 추상클래스를 의미상의 추상클래스라고 한다.
    의미상의 추상클래스의 메소드는 모두 빈body로 되어 있다.
  • 추상클레스는 직접적으로(자신의 클래스로) 메모리에 생성(new)할수 없다(추상 클래스로 객체생성X)
    => 생성하려면
    • Sub Class를 이용(반드시 Sub Class가 추상메소드를 Override 해야 한다)
    • 메소드를 이용
    • 익명 내부 클래스 이용

추상클래스 사용이유

객체 간의 필드와 메서드의 이름을 통일하여 소스의 가독성을 높이기 위함입니다. 추상 클래스는 상속을 강제합니다. 즉 부모 클래스에는 메서드의 시그니처만 정의해놓고 그 메서드의 실제 동작은 메서드를 상속받은 하위 클래스의 책임으로 위임하고 있습니다.

예제

package jun;

//추상클래스(완전하게 구현되어 있지 않은 메소드를 가지고 있는 클래스)
public abstract class AbstractTest { //POJO(Plain Old Java Object) - 기본적인 형식
	protected String name;

	public AbstractTest() {
		
	}

	public AbstractTest(String name) {
		super();
		this.name = name;
	}


	public String getName() { //메소드 구현
		return name;
	}

	public abstract void setName(String name); //추상메소드
											   	
}
package abstract_;

public class AbstractMain extends AbstractTest{

	@Override
	public void setName(String name) {
		this.name = name;
	}
	
	public static void main(String[] args) {
		//sub class를 이용하여 생성
		AbstractTest at = new AbstractMain(); //부모 = 자식
		at.setName("권용준");
		System.out.println(at.getName()); //권용준

	}

}
profile
개(발자어)린이

0개의 댓글