추상클래스
- abstract 예약어를 사용
- 상속만을 위해 만들어진 클래스
- 항상 추상메서드를 포함
- 추상 클래스는 인스턴스로 생성할 수 없다. But!! 형변환은 사용 할 수 있다.
- 실제 하위 클래스에서 각각 다르게 메서드를 구현할 때 사용
추상메서드
- abstract 예약어를 사용
- ex)
public abstract void run();
public abstract void jump();
- 구현 코드가 없다 = 함수 몸체(body)가 없다.
- ex)
int add(int x, int y){
return x + y;
}
- { } 안 내용이 함수몸체
- { } 대신 ; 를 사용
- 함수 몸체보다 함수 선언부를 잘 작성하는 것이 중요!! -> 어떤 일을 하는지 알 수 있게 표기하기 위해!!
구현된 메서드와 추상 메서드
- 구현된 메서드
- 하위 클래스에서 공통으로 사용할 코드 구현
- 하위 클래스에서 재정의 할 수 있음
- 추상 메서드
- 하위 클레스가 어떤 클래스인지에 따라 구현코드가 다름
모든 추상 메서드를 구현한 클래스에 abstract 예약어를 사용한다면?
- 문법상으로 모든 메서드를 구현했어도 abstract 예약어를 사용하면 추상 클래스이다.
템플릿
- final 예약어 사용
- 틀이 있는 메서드
- 메서드의 실행 순서와 시나리오를 정의
- 하위 클래스에서 재정의 불가능
- 조직 흐름이 이미 정해져 있는 프레임워크에서 많이 사용
상위 클래스인 추상 클래스는 하위에 구현된 여러 클래스를 하나의 자료형(상위 클래스 자료형)으로 선언하거나 대입할 수 있다.
추상클래스에 선언된 메서드를 호출하면 가상 메서드에 의해 각 클래스에 구현된 기능이 호출 된다.
즉, 하나의 코드가 다양한 자료형을 대상으로 동작하는 다형성을 활용가능
모든 추상클래스에 템플릿을 사용하는 것은 아니지만, 추상클래스를 활용할 수 있는 좋은 패턴이다.
final 예약어
- 마지막으로 정한 것이니 더이상 수정할 수 없다는 뜻
- 변수 - 상수를 의미
- 메서드 - 하위 클래스에서 재정의 불가
- 클래스 - 상속 불가
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
반응형
'Language > Java' 카테고리의 다른 글
'Do it 자바프로그래밍 입문' 11장 정리 (0) | 2022.09.27 |
---|---|
'Do it 자바프로그래밍 입문' 10장 정리 (0) | 2022.09.23 |
'Do it 자바프로그래밍 입문' 8장 정리 (0) | 2022.09.19 |
'Do it 자바프로그래밍 입문' 7장 정리 (0) | 2022.09.12 |
'Do it 자바프로그래밍 입문' 6장 정리 (0) | 2022.09.08 |
댓글