7-31 추상클래스
- 미완성 설계도. 미완성 메서드를 갖고 있는 클래스
- 다른 클래스 작성에 도움을 주기 위한것. 인스턴스 생성 불가
ex)
abstract class Animal {
abstract void cry()
}
Animal animal = new Animal(); // 에러 추상 클래스의 인스턴스 생성 불가
- 상속을 통해 추상 메서드를 완성해야 인스턴스 생성 가능
class Cat extends Animal {
void cry() { } // 추상 메서드를 구현
Animal cat = new Cat; // 인스턴스 생성 OK
추상 메서드(abstract method)
-미완성 메서드. 구현부(몸통, {})가 없는 메서드
/* 주석을 통해 어떤 기능을 수행할 목적으로 작성하였는지 설명한다. */
abstract 리턴타입 메서드 이름();
- 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우
*@override는 프로그래밍적으로 직접적인 실행에 영향을 주지 않지만 개발자가 개발자와 컴파일러가 코드를 이해하고 오류를 예방하는 데 매우 유용하다. + 컴파일러가 메서드 이름이나 메개변수에 오타가 있을때 오류를 방지해줌
추상 클래스를 상속받은 클래스는 추상 클래스 안에 있는 모든 추상 메서드를 반드시 오버라이딩 해야한다.
+ ** 추상화와 인터페이스 차이는 상속의 차이다, 추상화는 단일 상속만 가능하고 인터페이스는 다중 상속이 가능하다.
추상클래스의 작성
-여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존 클래스의 공통 부분을 뽑아서 추상클래스를 만든다.
추상화된 코드는 구체화된 코드보다 유연하다. 변경에 유리.