1. 추상 클래스
추상 클래스란, 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 뜻한다. 추상 클래스와 실체 클래스는 상속의 관계를 가지고 있으며, 추상 클래스가 부모, 실체 클래스가 자식으로 구현되어 실체클래스는 추상 클래스의 모든 특성을 물려받을 수 있다.
하지만, 추상 클래스는 실체 클래스의 공통 필드와 메소드를 추출해서 만들었기 때문에 객체를 직접 생성해서 사용할 수는 없다.
2. 추상 클래스를 왜 쓸까?
(1) 실체 클래스들의 공통된 필드와 메소드의 이름 통일
동일한 데이터와 기능임에도 불구하고 설꼐하는 사람에 따라 이름이 다르다 보니, 객체마다 사용방법이 달라지게 된다.
Dog와 Bird은 Animal을 상속함으로써 필드와 메소드 이름을 통일시킬 수 있다.
(2) 실체 클래스를 작성할 때 시간을 절약하기 위해
공통적인 필드와 메소드는 추상 클래스(Animal)에 선언해두고, 실체 클래스마다 필요한 다른 필드와 메소드를 실체 클래스에 선언하게 되면 클래스를 작성하는데 시간을 절약할 수 있다.
Dog와 Bird는 숨을 쉬고 걸어다닐 수 있는 공통 특성이 있지만, Bird는 날 수 있는 특성이 있다.
3. 추상 클래스 선언 - abstract
public abstract class 클래스이름 {
...
}
추상 클래스는 new 연산자로 직접 생성자를 호출할 수는 없지만 실체 클래스가 생성될 때 super()를 통해 추상 클래스 객체를 생성하므로 추상 클래스도 생성자를 포함해야한다.
4. 추상 메소드
추상 클래스는 실체 클래스가 공통적으로 가져야할 필드와 메소드를 정의해놓은 것이므로, 실체 클래스의 필드와 메소드를 통일화하는데 목적이 있다.
추상 클래스를 설계할때, 실체 클래스가 반드시 실행 내용을 채우도록 강요하고 싶다면 , 해당 메소드를 추상 메소드로 선언하면 된다.
실체 클래스는 반드시 추상 메소드를 오버라이딩해서 실행 내용을 작성해야 하고, 그렇지 않으면 컴파일 에러가 발생한다.
public abstract class 클래스이름 {
...
public abstract 타입명 메소드명();
}
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[JAVA] 람다식 - 문법, 함수적 인터페이스(@FuntionalInterface), 람다식의 종류 (0) | 2023.07.04 |
---|---|
[JAVA] 인터페이스와 구현클래스 - interface, implements (0) | 2023.06.30 |