Back-end/이것이 자바다[신용권 한빛미디어]

추상 클래스

Ho's log 2021. 10. 4. 18:17

추상 클래스의 개념

추상 (abstract) 실체 간에 공통되는 특성을 추출

 

객체를 직접 생성 할 수 있는 클래스를 실체 클래스

클래스들의 공통적인 특성을 추출해서 선언한 클래스 추상 클래스

추상클래스와 실체 클래스는 상속 관계 

 

추상 클래스는 new 연산자를 사용해서 인스턴스를 생성 시키지 못함 

부모 클래스로만 사용

코드로 설명하면 추상 클래스는 extends 뒤에만 올수 있는 클래스 


추상 클래스의 용도

1. 실체 클래스들의 공통된 필드와 메소드의 이름을 통일 할 목적

2. 실체 클래스를 작성할때 시간을 절약 

 

설계자와 코더는 일반적으로 다른 사람

 

설계자는 코더에서 클래스는 어떤 구조로 작성해야 한다는 것을 알려줄 필요성이 있다.

단순히 문서로 코더에게 전달한다면, 코더가 실수로 필드와 메소드 이름을 다르게 코딩 할 수있다.

설계자는 이내용들을 추려내어 추상 클래스로 설계 규격을 만드는 것이 좋다.

코더에게 추상클래스를 상속해서 구체적인 클래스를 만들도록 지시


추상 클래스 선언

abstract 키워드 붙이기 -> new 연산자를 이용해서 객체를 만들지 못하고 상속을 통해 자식 클래스만 만듬

 

public abstract class 클래스 {

	//필드
    //생성자
    //메소드

}

 

추상 클래스도 일반 클래스와 마찬가지로 필드, 생성자, 메소드 선언

new 연산자로 생성자 호출 불가

자식객체가 생성될때 super(...) 호출

 


추상 메소드와 오버라이딩 

추상 클래스는 실체 클래스가 공통적으로 가져야 할 필드와 메소들을 정의해 놓은 추상적인 클래스

실체 클래스의 멤버(필드, 메소드)를 통일화 목적 

모든 실체들이 가지고 있는 메소드의 실행 내용이 동일 하다면 추상 클래스에 메소드를 작성하는 것

 

but! 실행 내영이 실체 클래스 마다 달라야 하는경우 -> 추상 메소드 선언 

추상클래스에서만 선언 가능

메소드의 선언부만 있고 메소드 실행 내용인 중괄호{}가 없는 메소드

하위 클래스가 실행 내용을 채우도록 강요 하고 싶을 경우

자식 클래스는 반드시 추상 메소드를 재정의(오버라이딩) 실행 내용 작성 

[public | protected] abstract 리턴타입 메소드명(매개변수 ...);

 

'Back-end > 이것이 자바다[신용권 한빛미디어]' 카테고리의 다른 글

중첩 클래스와 중첩 인터페이스  (0) 2021.10.10
인터페이스  (0) 2021.10.09
타입 변환과 다형성  (0) 2021.10.04
상속  (0) 2021.10.04
어노테이션  (0) 2021.10.03