
그동안 스프링으로 프로젝트를 할 땐 자바 자체를 깊게 볼 일이 없어서
자바가 이렇게 어려운 언어인줄 몰랐다..
추상 클래스는 직접적으로 인스턴스화 될 수 없음 → 형태가 완벽하지 않은 클래스
Abstract Class
- 추상 메서드를 하나 이상 포함 가능
- 구현 되지 않은 메서드 (메서드 body가 없음)
- 선언, 정의만 포함
- 자식 클래스에서는 반드시 구현 되어야 함
- 구현 메서드도 보유 가능
- 직접 인스턴스 생성 불가능
new로 직접적으로 생성하는게 불가능- 무조건 상속을 받거나 해야가능
일반 메서드
public void name(매개변수) {
명령줄;
}
추상 메서드(미구현)
public abstract void getName();
→ body가 구현돼 있지 않음
→ 행동이 설정돼 있지 않기 때문에 직접 생성자 호출이 불가능
→ Override로 상속받아서 자식 클래스에서 구현
클래스들이 필수로 구현해야 되는 추상 자료형(클래스를 위한 클래스)
→ 객체의 사용 방법 가이드라인
Interface
- 추상 메서드만 가능 → public과 abstract만 올 수 있음
- 기본적으로 붙어있기 때문에 public과 abstract는 생략 가능
- 인터페이스는 여러개의 인터페이스를 구현받아서 사용 가능
- 다중 구현(상속)이 가능
public class name implements basename(){
// 명령문
}
default
- default를 붙이면 body를 생성할 수 있음
final
- final이 붙으면 더 이상 수정 불가능 → 상속도 불가능
- 상속 받았을 때 상위 클래스에서 메서드에 final이 붙어있으면 상속 불가능
→ 매서드의 매개변수에 final이 붙어 있는것은 상관 없음
@RequiredArgsConstructure 어노테이션이 이 기능을 대신 수행해줌// 외부에서 이너클래스에 접근하고 싶을 때
OuterClass.InnerClass innner = new OuterClass.InnerClass();