자바기반의 웹&앱 응용 SW개발자 양성과정 18일차 -33
1. 추상 클래스 &추상 메서드 (abstract)
abstract는 한국어로 번역하게되면 "추상적인"이라는 말이 됩니다. 하지만 그 뜻을 이해하기 쉽게 이용 됐을 때 사용되는 뜻으로 번역해 보자면 "공통분모"입니다 그룹 된 클래스 내에서 공통적으로 사용되는 기능들을 모아서 한 곳으로 모아 놓기 위한 공간 정도로 생각합니다.
기본적인 문법
public void abstract Class A
public abstract int bMethod();
-------------------------------
public void Class B extends A{
@Override
public int bMethod(){
return 3;
}
}
우리는 추상클래스와 매소드를 지정해줄 때 abstract라는 키워드를 사용해줍니다. 반드시 abstract가 붙은 메서드나 클래스는 그것을 직접적으로 new A();처럼 인스턴스를 생성해줄 수 없으며 그것을 상속시킬 클래스를 만들어서 생성된 클래스로써 기능을 사용하도록 강제하는 것입니다.
추상 메서드는 그 메서드의 구체적인 로직을 담고 있는 본체는 존재하지않고 메소드에대한 선언한 모습만 남아있는 모습입니다. 그렇게되면 상속받은 자손클래스는 강제적으로 메소드를 작성하도록 요구하여 책임을 넘기는 것입니다.
class b는 메소드의 본체를 작성해주지 않으면 오류가 발생하게 되는데 그 오류 내용은 A의 메서드인 bMethod를 생성하라라는 오류 내용이 출력됩니다.
또 추상 메서드를 하나라도 가지고 있는 클래스는 추상 클래스로써 정의되어야 됩니다.
2. 추상 클래스를 사용하는 이유
작은 규모에서는 잘 사용하지 않지만 큰 규모 프로젝트에서 다양한 맥락으로 사용될 수 있는 기능이 있고 그 기능을 사용하는 것에 대해 공통적인 부분이 있고 용도에 따라서 그 기능이 달라질 수 있다면 새로운 클래스에 기능을 넣고 추상 클래스로 만든 클래스에는 그 (기능==메서드)에 대해 시그니처만 정의해놓고 그것을 상속받은 클래스는 용도에 따라서 달라지는 구현을 기능을 사용하는 사용자의 필요해 따라 직접 작성하도록 강제하는 것이 추상 클래스를 사용하는 용도이다.
여라가 지 기능을 동시에 관리하는 목적과 코드의 집중화도 하려는 목적이 있다.
3. 디자인 패턴 (참고용)