본문 바로가기
java

(abstract)추상메서드

by 신방동불주먹 2022. 10. 6.

<추상클래스 (Abstract)>

 

1.  abstract 제한자를 붙여서 클래스를 선언
2.
일반 클래스와 동일하게 멤버를 정의
3. 추상 메소드를 정의 (선언부만 존재)
4. 생성이 불가
5. 자식 클래스에 반드시 상속해야 된다 (상속을 위한 클래스)
6. 자식클래스는 반드시 추상메소드를 오버라이딩 해야한다(=메소드의 구현부를 직접 작성해라)

7. 단일 상속만 지원

 

 

 

목적 : 오버라이딩 강제구현 => 자식입장에서 필요한 필수기능이기 때문에 추상메소드를 구현하는 것

 

package abstractClass;

public abstract class AbstractC {
	int x;
    
	AbstractC() {
		
	}
	
	void method() {
		
	}
	
	abstract void abstractMethod(); //추상메소드 - 선언부가 없음

}

 

 추상메서드  예시)

 

모든 자식 클래스에 필요한 공통기능을 구현한 추상클래스 Unit

-> 자식 클래스에서 필수로 필요한 기능들이기 때문에 오버라이딩을 강제 구현하는 추상메소드를 사용

 

package abstractClass;

abstract public class Unit {
	int x, y;
    
	abstract void move(int x, int y); //추상메소드

	void stop() { //일반메소드

	};

}

 

부모 클래스 Unit class 를 extends(상속) 하는 자식 클래스

-> 부모클래스의 abstract 메소드 move()를 구현 

 

package abstractClass;

public class Dropship extends Unit {
	void move(int x, int y) {};
	void load() {
		
	};
	void unload() {
		
	};
}
package abstractClass;

public class Marine extends Unit {
	void move(int x, int y) {}; //abstract를 제외하고
	void stimPack(){
	
	
	};
}
package abstractClass;

public class Tank extends Unit {
	void move(int x, int y) {};
	void changeMode() {
		
	};
}

 

  • 클래스를 상속(extends) 한 것이기 때문에 추상 메소드가 아닌 일반메소드도 사용이 가능

'java' 카테고리의 다른 글

UML(Unified Modeling Language)  (0) 2022.10.06
다형성(인터페이스)  (0) 2022.10.06
1005_lombok.jar 설치  (0) 2022.10.05
상속(private_정보은닉)  (0) 2022.10.05
상속(접근제어자)  (0) 2022.10.04