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()란?
자식 클래스가 자신을 생성할 때 부모 클래스의 생성자를 불러 초기화 할 때 사용됩니다.
(기본적으로 자식 클래스의 생성자에 추가됩니다)

좋은 웹페이지 즐겨찾기