자바(Java) - 추상클래스(abstract class)에 대해 알아보자

안녕하세요

이번 시간에는 자바에서 '추상 클래스'에 대한 개념을 알아보는 시간을 가지겠습니다.

추상클래스란 한개 이상의 추상 메소드를 가지는 클래스를 말합니다.

추상메소드(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);
 }
}

댓글 없음:

댓글 쓰기