Programming/자바(Java)

7-31 추상클래스

먹보 개발자 2024. 10. 3. 15:53

- 미완성 설계도. 미완성 메서드를 갖고 있는 클래스

- 다른 클래스 작성에 도움을 주기 위한것. 인스턴스 생성 불가

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는 프로그래밍적으로 직접적인 실행에 영향을 주지 않지만 개발자가 개발자와 컴파일러가 코드를 이해하고 오류를 예방하는 데 매우 유용하다. + 컴파일러가 메서드 이름이나 메개변수에 오타가 있을때 오류를 방지해줌

 

추상 클래스를 상속받은 클래스는 추상 클래스 안에 있는 모든 추상 메서드를 반드시 오버라이딩 해야한다.

 

+ ** 추상화와 인터페이스 차이는 상속의 차이다, 추상화는 단일 상속만 가능하고 인터페이스는 다중 상속이 가능하다.

 

추상클래스의 작성

-여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존 클래스의 공통 부분을 뽑아서 추상클래스를 만든다.

 

추상화된 코드는 구체화된 코드보다 유연하다. 변경에 유리.