본문 바로가기
Java/Java_basic

Step19. 추상 클래스(abstract)

by Mr.DonyStark 2023. 9. 26.

 ○ 클래스의 공통된 부분을 뽑아서 별도의 클래스 즉, 추상클래스를 만들어 놓고 이를 상속해서 사용
 ○ 추상 클래스의 특징

   - 멤버변수를 가짐
   - 추상클래스를 상속하기 위해서는 extends를 이용
   - 추상 메서드를 가지며 상속한 클래스에서 반드시 구현해야함
   - 일반 메서드도 가질수 있음
   - 일반 클래스와 마찬가지로 생성자도 있음

 ○ 추상 클래스와 인터페이스 공통점

   - 추상 메서드를 가짐
   - 객체 생성이 불가하며 자료형 타입으로 사용

 ○ 추상 클래스와 인터페이스 차이점

   - 추상 클래스 : 상수, 추상세서만 가짐. 추상 메서드를 구현만 하도록함. 다형성을 지원
   - 인터페이스 : 클래스가 가지는 모든 속성과 기능을 가짐. 추상 메서드 구현 및 상속의 기능을 가짐. 단일 상속만 지원.

예제 1) 추상클래스 생성 및 메서드 선언, 메서드 선언+정의

package person_test;

//추상클래스 선언 public abstract class 
public abstract class AbstractClassEX {
	
	//추상클래스 속성지정
	int num;
	String str;
	
	public AbstractClassEX() {
		System.out.println("추상클래스 생성자1");
	}

	public AbstractClassEX(int i, String s) {
		System.out.println("추상클래스 생성자1");
		
		this.num = i;
		this.str = s;
	}
	
	//추상클래스 메서드 선언 + 정의
	public void fun1() {
		System.out.println("웃다1");
	}
	
	//추상클래스 메서드 선언
	public abstract void fun2();
}

예제 1-1) 클래스 생성 및 메서드 선언, 추상클래스 상속 + override활용하여 추상클래스의 메서드 재정의

package person_test;

//생성클래스 추상클래스 참조
public class ClassEX extends AbstractClassEX {

	public ClassEX() {
		System.out.println("클래스 생성자");
	}
	
	public ClassEX(int i, String s) {
		super(i, s);
	}
	
	//추상클래스로부터 상속받아 재정의하기에 @Override 활용
	@Override
	public void fun2() {
		System.out.println("웃다2");
	}

}

예제 1-2) 객체선언 + 추상클래스를 객체 자료형타입으로 지정 및 메서드 활용

package person_test;

public class ClassEX_Main {
	//객체생성 + 추상클래스를 객체타입
	public static void main(String[] args) {
		AbstractClassEX EX = new ClassEX(10, "java");
	
		//클래스 지정 메서드 활용
		EX.fun1();
		EX.fun2();
	}
	
}

'Java > Java_basic' 카테고리의 다른 글

Step21. 문자열 클래스  (0) 2023.09.26
Step20. 람다식(Lamda)  (0) 2023.09.26
Step18. 인터페이스(Interface)  (0) 2023.09.25
Step17. 내부클래스와 익명클래스  (0) 2023.09.25
Step16. 오버라이드(Override)와 Super 클래스  (2) 2023.09.25