추상 메소드 (abstract method)
public abstract class 메소드명();
- 미완성된 메소드로 몸통부 { }가 구현되어 있지 않은 메소드
* 자식 클래스에서 오버라이딩을 통해 완성된다
* 메소드 사용의 통일성을 확보하고 표준화된 틀을 제공할 목적으로 사용한다
추상 클래스 (abstract class)
public abstract class 클래스명 {
}
- 미완성된 클래스
일반필드 + 일반메소드 + 추상메소드(생략가능)
* 추상메소드가 없어도 추상클래스로 만들 수 있다
- 개념적 : 이 클래스가 미완성된 클래스라는 걸 부여할 목적으로
- 프로그래밍적 : 객체 생성이 불가하게끔 하고자 할 때
* 추상메소드를 포함한 클래스는 반드시 추상클래스로 명시한다
* 추상메소드가 존재하는 추상클래스를 쓰는 이유
- 부모클래스에 추상메소드가 존재할 경우
자식클래스에서 강제로 오버라이딩해서 동일한 패턴의 메소드를 가지게 된다
각 자식 클래스마다 실행시킬 내용은 다르지만 동일한 형태의 메소드로 구현했으면 할 때
=> 메소드 통일성 확보 목적
=> 표준화된 틀을 제공할 목적
* 추상클래스는 미완성 클래스이기 때문에 객체 생성 불가하지만 레퍼런스 변수로는 사용이 가능하다
(다형성 적용시켜서 부모타입으로 자식 객체를 받아주는 형태는 가능)
* 추상메소드가 존재하는 추상클래스를 상속받는 순간 부모클래스에 있던 추상메소드를 강제로 오버라이딩해야 됨
인터페이스 (interface)
only 상수필드 + only 추상메소드
* 인터페이스에서는 public static와 abstract를 작성할 필요가 없다
extends 일반클래스 -> extends 추상클래스 -> implements 인터페이스
오른쪽으로 갈수록 강제성이 더 짙어짐 ( == 규약이 더 세진다 )
'Study' 카테고리의 다른 글
[JAVA/자바] 입출력 (IO) (0) | 2022.11.28 |
---|---|
[JAVA/자바] 예외처리 (Exception) (0) | 2022.11.23 |
[JAVA/자바] 다형성 (Polymorphism) (0) | 2022.11.15 |
[JAVA/자바] 클래스 (class) - 필드 / 생성자 / 메소드 (0) | 2022.11.10 |
[JAVA/자바] 전역 변수 / 지역 변수 / 접근제한자 / 상수필드 (0) | 2022.11.10 |