자바 - 상속3 (상속 관계의 생성자)

빵제이·2023년 7월 24일
0

자바

목록 보기
21/37

[ 상속 관계의 생성자 ]

    1. 자식 클래스를 생성할 땐 "반드시" 부모 클래스를 "먼저" 생성해야 한다.
    1. 서브 클래스를 생성할 땐 "반드시" 슈퍼 클래스를 "먼저" 생성해야 한다.
    1. 서브 클래스의 생성자가 호출될 때는 "반드시" 슈퍼 클래스의 생성자를 "먼저" 호출해야 한다.
    1. 만약 서브 클래스의 생성자에서 슈퍼 클래스의 생성자를 호출하지 않으면 Java에 의해서 슈퍼 클래스의 "디폴트 생성자"가 호출된다.
    1. 서브 클래스의 생성자에서 슈퍼 클래스의 생성자를 호출하는 방법은 super()이다.

[ 메인 메소드 ]

public class MainWrapper {

  public static void main(String[] args) {
    // new Student()를 이용한 Student 객체 생성
    Student s1 = new Student();
    System.out.println(s1.getName());
    System.out.println(s1.getSchool());
    
    // new Student("가산대학교")를 이용한 Student 객체 생성
    Student s2 = new Student("가산대학교");
    System.out.println(s2.getName());
    System.out.println(s2.getSchool());
  
    // new Student("홍길동", "가산대학교")를 이용한 Student 객체 생성
    Student s3 = new Student("홍길동", "가산대학교");
    System.out.println(s3.getName());
    System.out.println(s3.getSchool());
  }

}

[ 사람 - 부모 클래스 ]

public class Person {

private String name;
    
 // new Person()에서 호출되는 생성자(constructor)
    public Person() {
      System.out.println("Person() 호출");
    }
    
// new Person("홍길동")에서 호출되는 생성자(constructor)
    public Person(String name) {
      this.name = name;
      System.out.println("Person(String name) 호출");
    }
    
// Getter & Setter
    public String getName() {
      return name;
    }
  
public void setName(Stirng name) {
      this.name = name;
    }
}

[ 학생 - 자식 클래스 ]

public class Student extends Person {

  private String school;
  
  // new Student()에서 호출되는 생성자
  public Student() {
    System.out.println("Student() 호출");
  }
  
  // new Student("가산대학교")에서 호출되는 생성자
  public Student(String school) {
    this.school = school;
    System.out.println("Student(String school) 호출");
  }
  
  // new Student("홍길동", "가산대학교")에서 호출되는 생성자
  public Student(String name, String school) {
   
   // 파라미터 String name을 슈퍼 클래스의 생성자를 호출할 때 전달한다.
    super(name);  // 인수 name은 String 타입이므로 파라미터가 String인 Person생성자가 호출된다.
    this.school = school;
  }
  
  public String getSchool() {
    return school;
  }
  
  public void setSchool(String school) {
    this.school = school;
  }
}
profile
개인 아카이브

0개의 댓글