abstract

|

추상(abstract) : 여러가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용.

 

추상 클래스란 다른 클래스들의 공통이 되는 변수나 메소드의 이름과 형태만 기술해 놓았을 뿐 구체적인 내용이 없는 클래스.

 

메소드에서 무엇을 하는가는 추상클래스를 상속받은 하위클래스에서 오버라이딩을 통해 반드시 재정의해야함.

(재정의안되면 compile 안됨)

따라서 추상클래스는 다른 클래스의 템플릿으로 사용됨.

 

상속을 하도록 강제하는 것.

즉 abstract 클래스나 메소드를 사용하기 위해서는 반드시 상속해서 사용하도록 강제하는 것이 abstract다.

추상 메소드란 메소드의 시그니처만이 정의된 비어있는 메소드를 의미.

 

<예시>

abstract class Animal{     구체적인 내용 없이 공통점만 뽑아낸, 객체를 정의/생성하는 툴인 Animal이라는 클래스를 만든다

  abstract void cry();       구체적인 내용 없이 공통점만 뽑아낸, 리턴값이 없는 cry 라는 메소드를 선언한다.

}

 

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

부모 클래스에는 메소드의 시그니처만 정의해놓고 그 메소드의 실제 동작 방법은 이 메소드를 상속 받은 하위 클래스의 책임으로 위임하고 있다. 

상황에 따라서 동작 방법이 달라지는 메소드는 추상 메소드로 만들어서 하위 클래스에서 구현하도록 하고 모든 클래스의 공통분모의 경우에는 상위 클래스에 두어서 코드의 중복, 유지보수의 편의성 등을 꾀할 수 있다.

코드의 확장성을 높여서 유연한 프로그램을 만들고, 큰 프로그램일수록 추상 클래스가 중요!!

 

* 추상클래스 자동으로 만들기 : 클래스 생성창 -> Modifiers -> abstract 체크

 

############### 추상 메소드 ##################

템플릿 역할.

추상메소드가 있는 클래스는 추상클래스여야 한다.

추상메소드를 상속 받은 자식클래스가 메소드를 재정의하지 않는다면, 자식클래스는 추상메소드를 재정의하지 않아 추상클래스가 되기 때문에 객체를 생성하지 못하게 된다.

 

############### 디자인 패턴 ##################

프로그래밍이라는 것은 반복되는 패턴이 있다. 이런 패턴들을 모아서 정리한 것이 디자인 패턴(design pattern)이다.

물론 시각 디자이너들의 디자인이 아니라 좋은 소프트웨어를 만들기 위한 설계로서 디자인이라는 표현을 쓰고 있는 것이다.

디자인 패턴의 장점은 크게 두가지이다. 하는

좋은 설계를 단기간에 학습할 수 있다는 점이다. 물론 비교적 단기간이라는 뜻이다. 다른 하나는 소통에 도움이 된다는 점이다. 설계 방법을 토의하거나 전달할 때 설계 방법에 따라 적절한 이름이 있다면 상호간에 생각을 일치시키는 데 큰 도움이 될 것이다.

지금 당장 디자인 패턴이 필요하지는 않겠지만 이러한 것이 있다는 것은 기억해두자. 프로그래밍에 대한 권태가 왔을 때 시작하기 딱 좋은 주제가 디자인 패턴이다.

 

'Java' 카테고리의 다른 글

인터페이스  (0) 2019.06.07
여러가지 수식자(final, static, abstract)  (0) 2019.06.07
패키지와 접근 제어(접근제한자)  (0) 2019.06.06
API와 API 문서 보는 법  (0) 2019.06.06
클래스 패스  (0) 2019.05.29
And