YYYEJI

[JAVA] 추상 클래스(Abstract Class)란? 본문

Java

[JAVA] 추상 클래스(Abstract Class)란?

YEJI ⍢ 2022. 12. 27. 14:49
728x90

추상 메소드(Abstract method)란?

반드시 오버라이딩(overriding)해야 사용할 수 있는 메소드(method)를 의미합니다.

 

 

추상 클래스(Abstract Class)란?

Abstract로 지정된 클래스(class)는 객체(object) 생성이 불가능한 클래스입니다.

추상 메소드(abstract method)가 하나라도 포함되어 있으면 추상 클래스(abstract class)입니다.

 

추상 메소드(Abstract method)의 목적

추상 메소드를 상속받는 하위 클래스가 반드시 추상 메소드를 구현하도록 하기 위해서 입니다.

 

 

 

 

추상 클래스 코드


public abstract class Room_light {
	  abstract void askForTrunOn();
	  abstract void askForTrunOff();
	  public void turnOn() {
	  	System.out.println("A bright room");
	  }
	  public void turnOff() {
	  	System.out.println("A dark room");
	  }
}

추상 클래스(abstract class)는 추상 메소드(abstract method) 뿐만 아니라 일반 메소드(method)도 포함할 수 있습니다.

위에 보이는 코드처럼 추상 메소드(abstract method)는 body 부분을 구현하지 않으며, 상속받은 하위 클래스에서 구현해야 됩니다.

 

 

 

추상 클래스를 상속받는 클래스 코드


public class Room323 extends Room_light {
	  @Override
	  void askForTrunOn() {
	  	  System.out.println("???: Can I turn on the room light?");
	  	  System.out.println("???: Yes sure.");
	  }
	  
	  @Override
	  void askForTrunOff() {
	  	  System.out.println("???: Can I turn off the room light?");
	  	  System.out.println("???: Yes sure.");
	  }
	  
	  @Override
	  public void turnOn() {
		  System.out.println("-------------------------------------");
	  	  System.out.println("From now on, the room 323 is bright.");
	  }
	  
	  @Override
	  public void turnOff() {
		  System.out.println("-------------------------------------");
	  	  System.out.println("From now on, the room 323 is dark.");
	  }
}

추상 클래스(abstract class)를 상속받은 하위 클래스에서

오버라이딩(Overriding)을 통해 메소드(method)의 body 부분을 구현하게 됩니다.

 

 

메인 메소드(main method)


public static void main(String[] args) {
	Room323  roomMate = new Room323();
	
	roomMate.askForTrunOff();
	roomMate.turnOff();
}

추상 클래스(abstract class)를 상속받은 클래스(class)의 객체를 생성하면 메소드(method)를 잘 사용할 수 있습니다.

위에도 말했듯이 추상 클래스(abstract class)는 객체(object)를 생성할 수 없습니다.

 

 

 

◡̈

'Java' 카테고리의 다른 글

[JAVA] 예외처리(throws)란?  (0) 2022.12.27
[JAVA] 예외처리(try-catch, throw, finally)란?  (0) 2022.12.27
[JAVA] 인터페이스(Interface)란?  (0) 2022.12.27
[JAVA] 오버라이딩(Overriding)이란?  (0) 2022.12.27
[JAVA] Super 메소드  (0) 2022.12.27