minlog
article thumbnail

 

추상 클래스 

  • abstract 예약어를 사용
  • 구현 코드 없이 메서드의 선언만 있는 추상 메서드(abstract method)를 포함한 클래스
  • 추상 클래스는 new 할 수 없음 ( 인스턴스화 할 수 없음 )
  • 추상 클래스를 상속 받는 클래스는 추상 메서드를 무조건 오버라이딩 해야한다.
public abstract class 클래스명{
	public abstract void 메서드이름 ();
}

 

💡추상클래스가 필요한이유??

객체생성이 목적이 아니라 자식을 생성하기 위해 만들어졌다.

코드의 독립성과 일관성을 유지 할 수 있다.

  •  추상메서드에는 본체가 없다. ( 중괄호 없음 { } ) : 자식이 오버라이딩 해서 내용을 입력한다.
  • 무조건 자식이 오버라이딩하여 메서드의 본체를 완성하게된다. 때문에 객체의 다양성을 볼 수 있다.

 

 

 

 

템플릿 메서드 

  • 추상 메서드나 구현 된 메서드를 활용하여 코드의 흐름(시나리오)를 정의하는 메서드이다.
  • final로 선언하여 하위 클래스에서 재정의 할 수 없게 한다.
  • 프레임워크에서 많이 사용되는 설계 패턴
  • 추상 클래스로 선언된 상위 클래스에서 템플릿 메서드를 활용하여 전체적인 흐름을 정의하고 하위 클래스에서 다르게 구현되어야 하는 부분은 추상 메서드로 선언하여 하위 클래스에서 구현 하도록 함
public abstract class Car {
	
	public abstract void drive();
	public abstract void stop();
	
	public void startCar() {
		System.out.println("시동을 켭니다.");
	}
	
	public void turnOff() {
		System.out.println("시동을 끕니다.");
	}
			
	final public void run() {
		startCar();
		drive();
		stop();
		turnOff();
	}
}

 

 

💡final 예약어

변경이 불가능하게 만들어줌

  • final 변수 : 값이 변경될 수 없는 상수
  • final 메서드 : 하위 클래스에서 재정의 할 수 없는 메서드
  • final 클래스 : 상속할 수 없는 클래스

 

※ 공동으로 사용하는 상수 값을 정의하고 사용할 수 있다.

 

📑Define.java

public class Define {

	public static final int MIN = 1;
	public static final int MAX = 999999;
	public static final double PI = 3.14;
	public static final String GREETING = "Good Morning!";
	public static final int MATH_CODE = 1001;
	public static final int CHEMISTRY_CODE = 1002;
	
}

📑UsingDefine.java

public class UsingDefine {

	public static void main(String[] args) {

		System.out.println(Define.GREETING);
		System.out.println(Define.MIN);
		System.out.println(Define.MAX);
		System.out.println(Define.MATH_CODE);
		System.out.println(Define.CHEMISTRY_CODE);
		System.out.println("원주률은" + Define.PI + "입니다.");
	}

}
profile

minlog

@jimin-log

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!