Java/Java 기초

Java23 추상 클래스

Codezoy 2020. 5. 29. 20:20

추상 클래스 Animal로부터 파생 클래스 Dog와 Cat를 생성


  • 추상 클래스 Animal
abstract class Animal {
    private String name;
    public Animal(String name) { this.name = name;}
    public abstract void bark();  // 짖기
    public String getName() {return name;}  // 이름 확인 
}
  • 상속 클래스 Dog
class Dog extends Animal{
    private String type; // 개의 품종
    public Dog(String name, String type) {
        super(name); this.type = type;
    }
    @Override
    public void bark() {System.out.println("멍멍!");}
}  // Dog
  • 상속 클래스 Cat
class Cat extends Animal{
    private int age;
    public Cat(String name, int age) {
        super(name); this.age = age;
    }
    @Override
    public void bark() {System.out.println("냐옹!");}
}

추상 클래스


추상 클래스는 설계도에 해당한다. 따라서 추상 클래스는 다음의 특징을 갖는다.

  • 인스턴스를 생성할 수 없다.
  • 메소드의 내용을 정의할 수 없다. 그 내용은 반드시 서브 클레스에서 구체화 하여야 한다.
  • 클래스에 final, static, private를 지정할 수 없다.
  • 추상 메서드를 하나라도 갖는다면 추상 클래스이다.

추상 메서드


abstract를 붙여 선언한 메서드가 추상 메서드가 된다. 추상 메서드는 내용이 없으므로 {...} 대신에 ; 를 끝에 붙여서 종결한다.

추상 클래스 실행

public class AnimalTester {

    public static void main(String[] args) {

        Animal[] a = new Animal[2];
        a[0] = new Dog("뭉치", "치와와");  // 개
        a[1] = new Cat("마이클", 7);  // 고양이

        for(Animal s:a) {
            System.out.print(s.getName() + " ");
            s.bark();  // 짖기
            System.out.println();
        } // for
    } // main
}  // AnimalTester

결과

뭉치 멍멍!

마이클 냐옹!