package ch01;
public abstract class Animal {
//추상클래스 (abstract class)
//하나이상의 추상 메서드를 포합하는 클래스입니다
public String name;
//일반메서드
public void move() {
// System.out.println("이동 합니다");
}
//추상 메서드
public abstract void hunt();
//메인함수
public static void main(String[] args) {
//추상클래스는 사용했던 new 키워드를 사용해서 작성
// /new Animal();
}
}
package ch01;
public class Eagle extends Animal{
@Override
public void hunt() {
System.out.println("독수리가 날다가 토끼를 사냥합니다.");
}
@Override
public void move() {
super.move();
System.out.println("독수리가 날개를 쭉 펴고 날아갑니다.");
}
}
package ch01;
public class Tiger extends Animal{
//타입상속 : 추상클래스의 상속
//재정의 부모의 필요에의해서 다시만드는것 - 오버라이드
@Override
public void hunt() {
System.out.println("호랑이가 앞발로 사냥을 합니다.");
}
@Override
public void move() {
super.move();
System.out.println("살금 살금 조용히 이동합니다.");
}
//해결책
//1. 추상 메서드를 직접 재정의해서 구현한다.
//2. Tiger클래스도 추상 클래스로 만들어준다.
}
package ch01;
public abstract class Human extends Animal{
@Override
public void move() {
super.move();
System.out.println("사람이 두발로 걷습니다.");
}
}
package ch01;
public class Person extends Human {
@Override
public void hunt() {
System.out.println("사람이 도끼를 들고 사냥을 합니다.");
}
}
package ch01;
public class MainTest1 {
public static void main(String[] args) {
//문제 1.
//Animal 타입으로 호랑이 생성
//Animal 타입으로 독수리 생성
//Animal 타입으로 사람 생성
//다형성
Animal tiger = new Tiger();
Animal eagle = new Eagle();
Animal person = new Person();
//문제 2.
//Animal 타입으로 배열을 선언해보세요 배열의 크기는 3
Animal[] animals = new Animal[3];
//문제 3.
//배열안에 값 넣기 (호랑이, 독수리, 사람)
animals[0] = tiger;
animals[1] = eagle;
animals[2] = person;
//(tiger, eagle, person) move, hunt 메서드 호출
//for 문을 이용해서 만들어보자.
for (int i = 0; i < animals.length; i++) {
animals[i].move();
animals[i].hunt();
//컴파일 시점 -> hunt() 설계도를 만드는과정
//런타임 시점 -> hunt() animals[i].move(); 이메서드를 가져와서 출력
}
}
}
'Java > Excercise' 카테고리의 다른 글
abstract ch03 Car (0) | 2021.08.30 |
---|---|
abstract ch02 Computer (0) | 2021.08.30 |
inheritance ch04 FruitTest (0) | 2021.08.27 |
inheritance ch04 Fruit (0) | 2021.08.27 |
inheritance ch03 Person Student Teacher (0) | 2021.08.27 |