Java/Excercise

abstract ch01 Animal

낭구리 2021. 8. 30. 18:39
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