자바

[자바] 추상 클래스 예제

devjones 2021. 2. 11. 12:00

요구사항 : 각각의 점검상황마다 콘솔에 로그를 찍으려 한다.

1. 어떤 점검인지

2. 뭘할것인지

 

1. 긴급점검, 정기점검, 임시정검이 있다 가정한다.

2. 서버를 내리고 작업공지창을 띄워달라는 로그는 모든 점검상황에 해당한다.

 

다음은 추상클래스인 AbsNotice.java이다.

 

package notice;

public abstract class AbsNotice {

	public abstract void notice();
	
	public void shutdownServer() {
		
		System.out.println("서버를 내립니다.");
	}
	
	public void printWorkNoti() {
		
		System.out.println("작업공지 화면을 띄워주세요.");
	}
}

 

notice() 를 추상메소드로 작성하여 위 클래스를 상속하는 각 점검클래스가 자신의 상황에 맞게 이것을 구현하도록한다.

 

package notice;

public class EmrgncyNotice extends AbsNotice {

	@Override
	public void notice() {
		
		System.out.println("긴급 상황입니다!!!");
		
		shutdownServer();
		printWorkNoti();
	}

}

위는 긴급점검 클래스이다. 강제로 오버라이드한 notice메소드에 긴급상황임을 알리는 로그를 작성하고 상위 클래스에서 작성한 메소드를 호출한다. 다음으로 나올 정기점검이나 임시점검도 마찬가지이다.

 

package notice;

public class RglNotice extends AbsNotice {

	@Override
	public void notice() {
		
		System.out.println("정기점검입니다.");
		
		shutdownServer();
		printWorkNoti();
	}

}
package notice;

public class TempNoitce extends AbsNotice {

	@Override
	public void notice() {
		
		System.out.println("임시점검입니다.");
		
		shutdownServer();
		printWorkNoti();
	}

}

 

그리고 메인클래스

package main;

import notice.AbsNotice;
import notice.EmrgncyNotice;
import notice.TempNoitce;

public class Main {

	public static void main(String[] args) {
		
		AbsNotice absNoti = new EmrgncyNotice();
		
		absNoti.notice();
	}
}

결과:

 

 

 

본 포스트는 자바의 추상 클래스를 예제를 통해 더 잘 이해하길 바라는 마음에서 작성하였다.(내가)