이 코드는 Animal 클래스를 정의하고 있습니다. 여기서 Animal 클래스는 동물을 나타내며,
이름(name), 나이(age), 품종(breed), 체력(hp)을 나타내는 필드를 포함하고 있습니다.
또한, 생성자를 통해 동물이 태어날 때 초기화되는 작업이 이루어집니다.
Animal 클래스:
package com.sukgi.inheritance;
public class Animal {
String name;
int age;
String breed;
int hp;
public Animal(String name, int age) {
System.out.println("동물이 태어납니다.");
this.name = name;
this.age = age;
}
}
- 필드 (Fields):
- String name: 동물의 이름을 나타내는 문자열 필드.
- int age: 동물의 나이를 나타내는 정수 필드.
- String breed: 동물의 품종을 나타내는 문자열 필드.
- int hp: 동물의 체력을 나타내는 정수 필드.
- 생성자 (Constructor):
- public Animal(String name, int age): 동물이 태어날 때 호출되는 생성자입니다. 이름과 나이를 매개변수로 받아서 동물의 필드를 초기화하고, "동물이 태어납니다."라는 메시지를 출력합니다.
Cat 클래스 (Animal을 상속):
package com.sukgi.inheritance;
public class Cat extends Animal {
public Cat(String name, int age) {
super(name, age);
}
}
- Cat 클래스는 Animal 클래스를 상속합니다 (extends Animal).
- Cat 클래스의 생성자에서는 super(name, age);를 사용하여 부모 클래스인 Animal의 생성자를 호출하고 있습니다. 이는 부모 클래스의 초기화 코드를 실행함을 의미합니다.
Dog 클래스 (Animal을 상속):
package com.sukgi.inheritance;
public class Dog extends Animal {
public Dog(String name, int age) {
super(name, age);
}
}
- Dog 클래스도 Animal 클래스를 상속합니다.
- Dog 클래스의 생성자에서도 super(name, age);를 사용하여 부모 클래스인 Animal의 생성자를 호출하고 있습니다.
Animal 클래스의 특성을 공유하며, 각각의 생성자에서는 부모 클래스의 생성자를 호출하여 초기화를 수행하고 있습니다. 이는 코드의 재사용성과 확장성을 높이는데 도움이 됩니다. 상속을 통해 Cat 및 Dog 클래스는 Animal 클래스의 속성과 동작을 활용할 수 있습니다.
package com.sukgi.inheritance;
class Mouse extends Animal{
public Mouse(String name, int age) {
super(name, age);
}
//오버라이드 오버라이딩
//인터페이스는?
//오버로드 오버로딩 !
//상속 !
//정적메소드 !
}
class ZooKeeper extends Animal{
public ZooKeeper(String name, int age) {
super(name, age);
}
public void feed(Animal animal){
animal.hp++;
}
//오브젝트 = 최상위 클래스
}
public class Zoo {
public static void main(String[] args) {
ZooKeeper keeper = new ZooKeeper("사육사", 30);
Animal cat = new Cat("3PO", 5);//부모타입 형태로 자식 생성자 사용하기
Dog dog = new Dog("R2D2", 5);//자식타입이 앞에 오면 에러
Mouse mouse = new Mouse("미키마우스", 120);
cat = mouse;
//Dog dog = (Dog) cat;
keeper.feed(cat);
keeper.feed(dog);
keeper.feed(mouse);
}
}
ZooKeeper 클래스 (Animal을 상속):
- ZooKeeper 클래스는 Animal 클래스를 상속합니다.
- feed 메서드는 동물을 받아와서 체력(hp)을 증가시킵니다.
Zoo 클래스 (main 메서드):
- Zoo 클래스에서는 ZooKeeper를 생성하고, Cat, Dog, Mouse 인스턴스를 생성합니다.
- 다형성을 활용하여 Animal 타입으로 Cat과 Mouse를 사용할 수 있습니다.
- keeper.feed 메서드를 호출하여 각 동물의 체력을 증가시킵니다.
'2023.11.21-2024.05.31' 카테고리의 다른 글
231219 JAVA Overload(오버로드) (0) | 2023.12.20 |
---|---|
231219 JAVA Inheritance(상속 + 접근제어자 protected) (0) | 2023.12.20 |
231218 JAVA Inheritance(상속) (0) | 2023.12.19 |
231218 JAVA static02(인스턴스 멤버, 정적 멤버) (0) | 2023.12.19 |
231218 JAVA static01(인스턴스 멤버, 정적 멤버) (0) | 2023.12.19 |