시작하며
여러분 안녕하세요!
DreamHanks의 254cm입니다.
이번시간에는 추상클래스에 대해서 설명해 드릴게요.
Java의 전체 기사는 여기를 클릭해 주세요.
이전 기사는 [Java 개발] 제16회 오버라이드에 대해서 배워봤습니다.
추상 클래스
추상 클래스란?
추상 메서드를 하나 이상 포함하고 있는 클래스를 추상 클래스라고 합니다.
일반 클래스와 추상 클래스는 추상 메서드의 유무 이외의 차이는 없습니다.
추상 클래스는 그대로 인스턴스를 생성할 수 없습니다.
추상 메서드란?
추상메소드는 메소드의 선언만 존재하고 실행 시 동작이 기술되어 있지 않은 메소드입니다.
일반 메서드와 달리 상속받는 아이 클래스에서 반드시 오버라이드하여 동작을 정의해야 합니다.
즉, 추상 클래스는 상속을 받아서 사용하는 것을 전제로 만들어지는 클래스입니다.
추상 클래스 쓰기
1 |
접근제어자 abstract class 클래스명 {} |
샘플
1 2 3 |
public abstract class AbstactSample { } |
추상 메서드의 쓰기
1 |
접근제어자 abstract 반환가의 데이터형 메서드명(인수); |
샘플
1 2 3 |
public abstract class AbstactSample { public abstract void display(int showItem); } |
추상 메소드는 구현이 없고 메소드 이름, 반환 값의 데이터형, 인수만을 보고 무엇을 위한
메소드인가 판단을 해야 하기 때문에 JavaDoc코멘트를 작성하는 것이 좋습니다.
추상 클래스의 주의점
샘플
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public abstract class AbstactSample { public abstract void display(int showItem); public int sumNumber(int number1, int number2) { return number1 + number2; } } public class ExcuteClass { public static void main(String[] args) { AbstactSample abstactSample = new AbstactSample(); } } |
상기 샘플과 같이 추상 클래스는 인스턴스를 생성할 수 없습니다.
인스턴스를 생성할 수 없는 이유는, 실장되지 않은 추상 메서드를 대응할 수 없기 때문입니다.
그러나, 실장되지 않은 추상 메서드를 인스턴스가 생성될 때 실장하면 인스턴스를
생성할 수 있게 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 |
public class ExcuteClass { public static void main(String[] args) { AbstactSample abstactSample = new AbstactSample() { @Override public void display(int showItem) { System.out.println(showItem); } }; abstactSample.display(10); } } |
위와 같이 인스턴스를 생성할 수 있습니다.
추상 클래스의 상속
위의 샘플과 같이 인스턴스가 생성될 때마다 추상메소드를 구현하여 사용할 수도 있습니다만,
일반적으로는 추상 클래스를 상속하는 아이 클래스를 만들어 사용합니다.
샘플
1 2 3 |
public class AbstractChild extends AbstactSample{ } |
위와 같이 추상메소드를 구현하지 않으면 컴파일 오류가 나타납니다.
컴파일 에러가 표시되어 있는 곳을 마우스 오버하면
위와 같은 것이 표시됩니다.
보여지긴 했지만「Add unimplemented methods」를 클릭하면 자동으로 추상메서드의 오버라이드가 생성이 됩니다.
생성된 빈 메소드에서 필요한 처리를 만들고 추상 메소드를 구현합니다.
샘플
1 2 3 4 5 6 7 |
public class ExcuteClass { public static void main(String[] args) { AbstractChild abstractChild = new AbstractChild(); abstractChild.display(10); } } |
위와 같이 아이 클래스의 인스턴스를 생성하여 추상 메서드를 호출할 수 있습니다.
끝으로
이번 기사는 이상입니다.
다음시간에는 인터페이스를 배워 보도록합시다.
방문해 주셔서 감사합니다.
コメント