반응형
자바에서 추상클래스는 작성 시 Modifiers 부분에서 abstract를 체크하거나
작성 후 class 왼쪽에 abstract를 넣어서 만들 수 있다
추상 클래스의 특징은
abstract를 넣어 메소드를 정의만 할 수 있고
동시에 일반 메소드를 정의, 구현을 할 수 있다
인터페이스는 정의만 할 수 있는데 추상 클래스는 정의와 구현도 가능한 것이다
다른 특징으로는 추상 클래스는 객체화(인스턴스화)가 불가능하고
위 예제를 보면 추상 클래스 abstractClass를 상속받은 getAbstract 클래스인데
추상 클래스를 상속받을 시 추상 클래스에서 구현까지 한 메소드는 다시 구현할 필요가 없지만
추상 메소드는 반드시 구현하거나 클래스 형태를 추상 클래스로 바꿔줘야 한다
마지막으로 정리해보자면
추상 클래스는 클래스 왼쪽에 abstract를 붙인 클래스인데
추상 클래스에는 abstract를 붙여 메소드를 정의만 하거나
혹은 붙이지 않고 구현까지 모두 가능하다
다만 추상 클래스를 상속받아 사용 시에는
추상 클래스에 구현한 추상 메소드는 반드시 구현해주거나
혹은 상속받은 클래스를 abstract 클래스로 바꿔줘야 한다
추상 클래스의 용도는
위에 설명한 것과 같이 추상 클래스 안에
정의만 한 메소드와 정의와 구현을 같이 한 메소드를 작성해
각 클래스가 동일하게 사용해야 하는 메소드는 구현까지 한 메소드를 쓰고
각 클래스별로 개별적으로 구현해야 하는 부분은 따로 구현이 가능하다
예제에 사용한 코드는 아래와 같다
public abstract class AbstractClass {
public AbstractClass() { // 생성자
System.out.println("MAKE Abs");
}
public abstract void absEmptyMethod2();
public void absMethod() {
System.out.println("method abs");
}
public static void main(String[] args) {
// AbstractClass ac = new AbstractClass(); // abstract class는 객체화 불가
}
}
public class getAbstract extends AbstractClass {
@Override
public void absEmptyMethod2() { // 생성자
}
public static void main(String[] args) {
getAbstract ga = new getAbstract();
ga.absMethod();
}
}
반응형
'Language > Java' 카테고리의 다른 글
자바 Error Exception 차이 정리 (0) | 2019.11.11 |
---|---|
자바 예외처리 종류 및 예제 (0) | 2019.11.11 |
자바 인터페이스 예제 및 사용 이유 정리 (0) | 2019.10.29 |
자바 extends Thread, implements Runnable 차이 (0) | 2019.10.23 |
자바 쓰레드 예제 및 사용 이유 알아보기 (5) | 2019.10.23 |
댓글