이번 시간에는 자바에서 '추상 클래스'에 대한 개념을 알아보는 시간을 가지겠습니다.
추상클래스란 한개 이상의 추상 메소드를 가지는 클래스를 말합니다.
추상메소드(abstract method)란?
메소드 몸체(body)없이 선언만 하는 것으로..
이 때 메소드 앞에 abstract 란 modifier를 붙여 줍니다.
ex) abstract public void sub();
추상클래스에서 좀 더 유의해야 할 사항이 있다면 아래와 같습니다.
추상 클래스를 상속받은 클래스에서는 추상 메소드를 강제적으로 오버라이딩해야 합니다. 그렇지 않을 경우 그 자식 클래스도 추상 클래스가 되어야 합니다
추상 클래스는 타입선언은 할 수 있으나 new 해서 객체 생성은 할 수 없으며, 반드시 상속을 통해서만 완성됩니다.
자 이론은 여기까지 하고 실제 구현 예를 봅시다.
abstract public class Animal{
abstract public void crySound();
abstract public String getBaby(int num);
}
class Dog extends Animal{
public void crySound(){
System.out.println("@@ 개 짖는 소리 @@");
System.out.println("멍멍~~");
}
public String getBaby(int x){
String str="";
str=x+"마리의 새끼를 낳았어요";
return str;
}
}
class Cat extends Animal{
public void crySound(){
System.out.println("@@ 고양이 우는 소리 @@");
System.out.println("야옹~~");
}
public String getBaby(int x){
String str="";
str=x+"마리의 새끼를 낳았어요";
return str;
}
}
위의 소스는 추상화 클래스에서 두 개의 추상 메소드를 구현하고
개, 고양이 클래스에서 추상 메소드를 사용한 예제입니다.
아래의 소스는 자바의 swing을 활용하여 응용한 예제입니다.
public class T_AnimalTest {
public static void main(String[] args) {
String type=JOptionPane.showInputDialog("동물 유형을 입력하세요");
String strNum=JOptionPane.showInputDialog("마리수를 입력하세요");
int num = Integer.parseInt(strNum);
Animal d = null; // 부모타입 Animal d 선언
if(type.equals("개")){ // 문자열 내용 비교
d = new Dog();
}else if(type.equals("고양이")){
d= new Cat();
}else{
System.out.println("그런 동물 안키워~~");
return; // 밑의 소스로 안내려감, return에서 끝나버림
}
d.crySound();
String s = d.getBaby(num);
System.out.println(s);
}
}
댓글 없음:
댓글 쓰기