20210804) 생성자 - super() 생성자
Person
package super_constructor;
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person [name=" + name + "]";
}
}
employee extends Person
package super_constructor;
public class Employee extends Person {
}
App
package super_constructor;
public class App {
public static void main(String[] args) {
Employee emp1 = new Employee();
System.out.println(emp1);
}
}
App 실행
실행 순서 new Employee(); 실행 시
상위 클래스인 Person 생성자 => 하위 클래스 Employee 생성자
만약, Person 생성자에 매개변수 name을 넣으면?
public Person(String name) {
this.name = name;
System.out.println("person 생성자");
}
Employee 생성자에서 에러 발생
이유는 Person 생성자를 불러올 수 없기 때문
public Employee() {
super("익명"); // 생략. 상위 클래스 Person의 생성자
System.out.println("employee 생성자");
}
이 때 super가 상위 클래스 Person의 생성자를 부른다
this란?
현재 클래스의 인스턴스를 의미합니다.
즉, 현재 클래스의 멤버변수를 지정할 때 사용합니다.
this()란?
현재 클래스에 정의된 생성자를 부를 때 사용됩니다
super란?
자식 클래스에서 상속받은 부모 클래스의 멤버 변수를 참조할 때 사용
super()란?
자식 클래스가 자신을 생성할 때 부모 클래스의 생성자를 불러 초기화 할 때 사용됩니다.
(기본적으로 자식 클래스의 생성자에 추가됩니다)
Author And Source
이 문제에 관하여(20210804) 생성자 - super() 생성자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@galduck/20210804-생성자-super-생성자저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)