이번 시간에는 자바에서 '추상 클래스'에 대한 개념을 알아보는 시간을 가지겠습니다.
추상클래스란 한개 이상의 추상 메소드를 가지는 클래스를 말합니다.
추상메소드(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); } }
댓글 없음:
댓글 쓰기