Language/Java

'Do it 자바프로그래밍 입문' 9장 정리

ABCD 2022. 9. 21.

추상클래스

  • abstract 예약어를 사용
  • 상속만을 위해 만들어진 클래스
  • 항상 추상메서드를 포함
  • 추상 클래스는 인스턴스로 생성할 수 없다. But!! 형변환은 사용 할 수 있다.
  • 실제 하위 클래스에서 각각 다르게 메서드를 구현할 때 사용

 

추상메서드

  • abstract 예약어를 사용
  • ex)
public abstract void run();
public abstract void jump();
  • 구현 코드가 없다 = 함수 몸체(body)가 없다.
  • ex)
int add(int x, int y){
	return x + y;
}
  • { } 안 내용이 함수몸체
  • { } 대신 ; 를 사용
  • 함수 몸체보다 함수 선언부를 잘 작성하는 것이 중요!!  ->  어떤 일을 하는지 알 수 있게 표기하기 위해!!

 

구현된 메서드와 추상 메서드

  • 구현된 메서드
    1. 하위 클래스에서 공통으로 사용할 코드 구현
    2. 하위 클래스에서 재정의 할 수 있음
  • 추상 메서드
    1. 하위 클레스가 어떤 클래스인지에 따라 구현코드가 다름

 

모든 추상 메서드를 구현한 클래스에 abstract 예약어를 사용한다면?

  • 문법상으로 모든 메서드를 구현했어도 abstract 예약어를 사용하면 추상 클래스이다.

 

템플릿

  • final 예약어 사용
  • 틀이 있는 메서드
  • 메서드의 실행 순서와 시나리오를 정의
  • 하위 클래스에서 재정의 불가능
  • 조직 흐름이 이미 정해져 있는 프레임워크에서 많이 사용

상위 클래스인 추상 클래스는 하위에 구현된 여러 클래스를 하나의 자료형(상위 클래스 자료형)으로 선언하거나 대입할 수 있다.

 

추상클래스에 선언된 메서드를 호출하면 가상 메서드에 의해 각 클래스에 구현된 기능이 호출 된다. 

 

즉, 하나의 코드가 다양한 자료형을 대상으로 동작하는 다형성을 활용가능

 

 

모든 추상클래스에 템플릿을 사용하는 것은 아니지만, 추상클래스를 활용할 수 있는 좋은 패턴이다.

 

final 예약어

  • 마지막으로 정한 것이니 더이상 수정할 수 없다는 뜻
    1. 변수 - 상수를 의미
    2. 메서드 - 하위 클래스에서 재정의 불가
    3. 클래스 - 상속 불가

 

final 변수

  • 상수를 의미
  • 일반 변수와 구별하기 위해 대문자로 쓰는 경우가 많음
  • 자바로 프로젝트 진행시 여러파일에서 공유하는 상수 값은 한 파일에 모아 public static final로 선언하여 사용하기도 한다.
package final;

public calss Define {
	public static int MIN = 1;
    public static final int MAX = 99999;
	public static final int ENG = 1001;
	public static final int MATH = 2001;
	public static final double PI = 3.14;
	public static final String GOOD_MORNING = "Good Morning!";
}

 

final 클래스

  • 보안과 관련되어 있꺼나 기반클래스가 변하면 안될경우 사용

 

테스트 주도 개발

  • 테스트 코드를 먼저 개발하고 오류를 없애나가는 개발 방법 ( 역순으로 코드를 짜는 방식 )
728x90
반응형

댓글

💲 추천 글