package step4;
/*
void beFriendly() {
System.out.println("친근하게 굴기");
}
void play() {
System.out.println("놀기");
}
*/
class Animal {
String food; // "meat"(고기) "grass"(풀)
int hunger; // 배고픈 정도
void makeNoise() {
System.out.println("소리내기");
}
void eat() { // 육식동물, 채식동물
System.out.println("음식을 먹는다.");
}
void sleep() {
System.out.println("잠은 잔다.");
}
void roam() {
System.out.println("돌아다닌다.");
}
}
/*
Animal을 상속받는 하위클래스
: Dog, Wolf, Hippo(하마), Cat, Tiger(호랑이), Lion(사자)
*/
class Hippo extends Animal { // 하마
@Override
void makeNoise() {
System.out.println("하마스럽게 소리내기~~");
}
@Override
void eat() {
System.out.println("하마스럽게 먹는다.");
}
}
class DogLike extends Animal { // 개과 동물
@Override
void roam() {
System.out.println("무리지어 돌아다닌다.");
}
} // DogLike class
class CatLike extends Animal { // 고양이과 동물
@Override
void roam() {
System.out.println("혼자서 돌아다닌다.");
}
} // CatLike class
class Dog extends DogLike {
@Override
void makeNoise() {
System.out.println("멍멍~!!");
}
@Override
void eat() {
System.out.println("강아지스럽게 먹는다.");
}
// 애완동물용 메소드
void beFriendly() {
System.out.println("강아지스럽게 친근하게 굴기");
}
void play() {
System.out.println("놀기");
}
}
class Wolf extends DogLike {
@Override
void makeNoise() {
System.out.println("아우~~~~!");
}
@Override
void eat() {
System.out.println("늑대스럽게 먹는다.");
}
}
class Cat extends CatLike {
@Override
void makeNoise() {
System.out.println("야옹~~!");
}
@Override
void eat() {
System.out.println("고양이스럽게 먹는다.");
}
void doFriendly() {
System.out.println("고양이스럽게 친근하게 굴기");
}
}
public class Test {
public static void main(String[] args) {
// *애완동물로 볼수있는 클래스(Dog,Cat) 각각이
// 따로 애완동물용 메소드를 가지는 경우
// 단점: 다형성을 이용한 다형적 코드를 사용못함
Animal ani = new Dog();
// ani.beFriendly(); // 호출못함
Dog dog = new Dog();
dog.beFriendly();
Cat cat = new Cat();
cat.doFriendly();
}
}
'IT > Java' 카테고리의 다른 글
자바 JFrame 상속 받는 GUI 예제 (0) | 2018.07.23 |
---|---|
자바 추상메소드, 인터페이스를 이해할 수 있는 순차적 예제5 (0) | 2018.07.23 |
자바 추상메소드, 인터페이스를 이해할 수 있는 순차적 예제3 (0) | 2018.07.23 |
자바 추상메소드, 인터페이스를 이해할 수 있는 순차적 예제2 (0) | 2018.07.23 |
자바 추상메소드, 인터페이스를 이해할 수 있는 순차적 예제1 (0) | 2018.07.23 |