본문 바로가기
Language/Java

자바 추상클래스 예제 및 사용이유 정리

by wakestand 2019. 10. 30.
반응형

자바에서 추상클래스는 작성 시 Modifiers 부분에서 abstract를 체크하거나

작성 후 class 왼쪽에 abstract를 넣어서 만들 수 있다

 

추상 클래스의 특징은 

abstract를 넣어 메소드를 정의만 할 수 있고

동시에 일반 메소드를 정의, 구현을 할 수 있다

인터페이스는 정의만 할 수 있는데 추상 클래스는 정의와 구현도 가능한 것이다

 

자바 인터페이스 예제 및 사용 이유 정리

자바에서 인터페이스는 Class가 아닌 Interface를 만들어 사용하게 되는데 우클릭 후 New -> Interface를 눌러 만들어주면 된다 위 스크린샷은 interface로 만든 InterExample인데 보면 인터페이스 안에서는 특..

wakestand.tistory.com

다른 특징으로는 추상 클래스는 객체화(인스턴스화)가 불가능하고 

 

위 예제를 보면 추상 클래스 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();
	}	

}
반응형

댓글