추상 클래스 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
결과
뭉치 멍멍!
마이클 냐옹!
'Java > Java 기초' 카테고리의 다른 글
Java25 가위바위보 프로그램 (0) | 2020.06.02 |
---|---|
Java24 문서화 주석과 JavaDoc (0) | 2020.06.01 |
Java22 클래스의 파생과 멤버, instance of, final 클래스 (0) | 2020.05.28 |
Java21 참조형의 확대 변환과 축소 변환 (0) | 2020.05.27 |
Java20 클래스 오버라이드와 어노테이션 (0) | 2020.05.26 |