본문 바로가기
언어/JAVA

추상 클래스(abstract class) 구현

by step 1 2021. 4. 18.
반응형

추상 클래스

  • 구현 코드 없이 메서드의 선언만 있는 추상 메서드를 포함한 클래스
  • 메서드 선언(declaration): 반환 타입, 메서드 이름, 매개변수로 구성
  • 메서드 정의(definition): 메서드 구현과 동일한 의미 구현부를 가짐
  • abstract 예약어를 사용
  • 추상 클래스는 new 할 수 없음(인스턴스화 할 수 없음)

 

추상 클래스 구현하기

  • 메서드에 구현 코드가 없으면 abstract로 선언
  • abstract로 선언된 메서드를 가진 클래스는 abstract로 선언
  • 모든 메서드가 구현 된 클래스라도 abstract로 선언되면 추상 클래스로 인스턴스화 할 수 없음
  • 추상 클래스의 추상 메서드는 하위 클래스가 상속 하여 구현
package ch30;

// 추상 클래스 생성 (abstract)
public abstract class Computer {

	// 추상 메서드 생성
	public abstract void display();
	public abstract void typing();
	
	// 공통으로 사용 할 메서드 생성
	void turnOn() {
		System.out.println("전원을 켭니다.");
	}
	
	void turnOff() {
		System.out.println("전원을 끕니다");
	}
}

 

package ch30;

public class Desktop extends Computer{

	@Override
	public void display() {
		System.out.println("Desktop display");
		
	}

	@Override
	public void typing() {
		System.out.println("Desktop typing");
		
	}

	// 재정의
	@Override
	void turnOff() {
		System.out.println("Desktop turnOff");
	}

	
}

 

package ch30;

public class MyNoteBook extends NoteBook{

	@Override
	public void typing() {
		System.out.println("MyNoteBook typing");
		
	}

}

 

package ch30;

public abstract class NoteBook extends Computer{

	@Override
	public void display() {
		System.out.println("NotoBook display");
		
	}


}

 

package ch30;

public class ComputerTest {

	public static void main(String[] args) {
		Computer desktop = new Desktop();
		
		desktop.display();	
		
	}
	
}

 

결과

반응형