티스토리 뷰

Goal 

 - 추상 클래스에 대해 알아본다.

 - 추상 클래스를 구현하는 방법을 알아본다.

 - 추상 클래스를 사용하는 이유에 대해 알아본다.

1. 추상 클래스 

 - 추상 메서드를 포함한 클래스 (추상 메서드로만 이루어진 것은 아님! 구현된 메서드도 존재)

 - 추상 메서드 : 구현 코드가 없이 선언부만 있는 메서드 

 public abstract void display(); // body부분이 없이 세미콜론으로 끝나는 추상 클래스

 - abstract 예약어 사용

 - 추상 클래스는 new (인스턴스화) 할 수 없음. (내부에 추상 메서드를 포함하고 있기 때문에)

 

2. 추상 클래스 구현

public abstract class Computer {

    public abstract void display();
    public abstract void typing();

}

 - 하위 클래스가 추상 클래스를 상속 받을 경우, 하위 클래스는 상위 클래스에서 구현되지 않은 추상 메서드들을 구현해야 한다.  구현하고 싶지 않거나, 일부만 구현하고자 하는 경우는 하위 클래스도 추상 클래스로 선언해야 한다.

 - 하위 클래스에 모든 메서드가 구현되었다고 해도 클래스에 abstract 키워드를 사용하면 추상 클래스가 된다. (추상 클래스로 선언이 되면 인스턴스화 할 수 없기 때문에, 클래스를 상속용으로만 쓰기 위해 이러한 방법을 사용한다)

 

사진 1) 추상 클래스와 하위 클래스의 관계도

 - 추상 클래스는 관계도에서 주로 이탤릭체로 표현한다. 

 

3. 추상 클래스를 사용하는 이유

 - 추상 클래스는 주로 상속의 상위클래스로 사용됨. (하위 클래스에 구현의 책임을 위임함)

 - 주로 상위 클래스를 추상 클래스로 구현하고, 하위 클래스에서 세부적인 기능을 구현 하기 위해 사용.

 - 추상 메서드 : 하위 클래스가 구현해야 하는 메서드

 - 구현된 메서드 : 하위 클래스가 공통으로 사용하는 기능의 메서드, 하위 클래스에 따라 재정의 할 수 있음

 

 1) 추상클래스의 구현

 - 추상 메서드와 구현된 메서드가 같이 있음.

package abstractex;

public abstract class Computer {
    
    public abstract void display();
    public abstract void typing();
    
    public void turnOn() {
        System.out.println("전원을 켭니다.");
    }
    
    public void turnOff() {
        System.out.println("전원을 끕니다.");
    }

}

 

 

 

 

'Java > Java 올인원 패키지' 카테고리의 다른 글

19. 인터페이스 (Java)  (0) 2020.03.18
18. 템플릿 메서드 (Java)  (0) 2020.03.17
16. 다운캐스팅과 instanceof (Java)  (0) 2020.03.17
14. 메서드 오버라이딩 (Java)  (0) 2020.03.17
13. 상속 (Java)  (0) 2020.03.16
댓글