Hello

Java 추상클래스의 작성1

by 볼빵빵오춘기

추상클래스의 작성

여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존클래스의 공통 부분을 뽑아서 추상클래스를 만든다.

더보기

⇒ 공통부분을 빼냄으로써 중복을 제거하고 코드가 간결해졌다.

 


Object에 담았을때와 비교해보면

예제 코드

더보기
abstract class Unit{
	int x, y;
	abstract void move(int x, int y);
	void stop() { /* 현재 위치에 정지 */ }
}

class Marine extends Unit{ // 보병 
	void move(int x, int y) {
		System.out.println("Marind[x="+x+", y="+y+"]");
	}
	void stimPack() { /* 스팀팩을 사용한다. */ }
}

class Tank extends Unit{ // 탱크  
	void move(int x, int y) {
		System.out.println("Tank[x="+x*2+", y="+y*2+"]");
	}
	void changeMode() { /* 공격모드를 변환한다. */ }
}

class Dropship extends Unit{ // 탱크  
	void move(int x, int y) {
		System.out.println("Dropship[x="+x*3+", y="+y*3+"]");
	}
	void changeMode() { /* 공격모드를 변환한다. */ }
}

public class PlayerTest {

	public static void main(String[] args) {
		Unit[] group = {new Marine(),new Tank(),new Dropship()}; // 코드1
		for(int i=0;i<group.length;i++)
			group[i].move(200,100);
	}

}

⇒ 코드1에서 Unit[] 이 아니라 Object로 변경해서 차이점 확인해보면 더 확실히 알 수 있음.

 

정리하자면

  • 기존 클래스의 공통부분을 뽑아서 추상클래스로 작성하자 > 코드 간결해진다.
  • 여러종류의 클래스를 배열에 담아서 한번에 이동 가능하다. > 다형성의 장점!
  • unit[] group = { new Marine(), new Tank(), new Dropship() }; > 배열생성, 초기화 한번에 한 문장으로 가능하다. [위의 예시 참고]

 

추상클래스 작성(feat. 그림으로 보기)

더보기

 

 

 


 

추상클래스를 작성함으로써 장점

  • 중복 제거된다.
  • 쉽게 작성 가능하다.
더보기

설명을 비교 통해 하자면

Product라는 클래스가 하나있고 물건을 추가해야하는 상황이라고 가정하면 물건을 처음부터 다 만드는 것이 아닌 미완성설계도를 가져와 다른제품만들면 되기때문에 편함.

  • 코드의 관리가 용이하다.
더보기

추상화된 클래스는 미완성의 클래스!

추상화된 코드는 구체화된 코드보다 유연하다.

즉, 변경에 유리하다.

 

GregorianCalendar cal = new GregorianCalendar(); // 구체적
Calendar cal = Calendar.getInstance(); // 추상적

 

  • 추상클래스를 의미있는 단계별로 해놓으면 원하는곳에서 꺼내와서 사용가능하다.

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기