생성자 오버라이딩 업캐스팅

2024. 7. 26. 19:17정보처리,전산/JAVA

반응형
// Animal 클래스 선언
class Animal {

  // Animal 클래스의 생성자
  public Animal() {
    // 생성자가 호출될 때마다 "Always called" 출력
    System.out.println("Always called");
  }

  // Animal 클래스의 makeSound 메서드
  public void makeSound() {
    // 메서드 호출 시 "Animals make sounds" 출력
    System.out.println("Animals make sounds");
  }
}

// Animal 클래스를 상속받은 Cat 클래스 선언
class Cat extends Animal {
  // Cat 클래스의 makeSound 메서드 (오버라이딩)
  public void makeSound() {
    // 부모 클래스(Animal)의 makeSound 메서드 호출
    super.makeSound();
    // "Meow" 출력
    System.out.println("Meow");
  }
}

// Animal 클래스를 상속받은 Dog 클래스 선언
class Dog extends Animal {
  // Dog 클래스의 makeSound 메서드 (오버라이딩)
  public void makeSound() {
    // 부모 클래스(Animal)의 makeSound 메서드 호출 주석 처리
    // super.makeSound();
    // "Woof" 출력
    System.out.println("Woof");
  }
}

// Main 클래스 선언
public class Main {
  // main 메서드 - 자바 프로그램의 시작점
  public static void main(String[] args) {
    // Animal 객체 생성
    Animal animal = new Animal();
    // Cat 객체를 Animal 타입으로 생성 (업캐스팅)
    Animal animal1 = new Cat();
    // Dog 객체를 Animal 타입으로 생성 (업캐스팅)
    Animal animal2 = new Dog();

    // Cat 객체의 makeSound 메서드 호출
    animal1.makeSound();
    // Dog 객체의 makeSound 메서드 호출
    animal2.makeSound();
  }
}

 


 
- 생성자는 클래스가 인스턴스화될 때 호출되는 특별한 메서드로, 클래스명과 동일하며 반환 타입이 없다.
 
- 업캐스팅은 자식 클래스의 객체를 부모 클래스 타입으로 참조하는 것. 이를 통해 다형성을 구현할 수 있다.
 

반응형