JAVA
221011 super
주영재
2022. 10. 11. 10:22
super
super. , super()
super는 한단계 위 부모클래스를 의미함.
super.은 부모의 멤버변수, 메서드,
super()는 부모의 생성자.
★
생성자의 첫 라인에는 this()나 super()가 있어야 하는데 이를 적지 않으면
super()가 자동적으로 삽입되어 부모클래스의 기본 생성자를 자동으로 호출한다.
자바의 모든 클래스는 'Object class'를 상속받고 있다. 이는 자바의 최상위 부모클래스이다.
우리가 자바에서 Object 클래스의 기능을 사용할 수 있는 건 super()가 묵시적으로 삽입되어 있기 때문
super.메서드를 하면 원형 메서드를 호출할 수 있다.
메서드는 오버라이딩이 가능해서 오버라이딩된 메서드를 가장 먼저 실행
때문에 super.메서드를 사용하거나 필요한 원형 메서드를 호출하기 위해 super.을 사용
package day06.super_;
public class Mother extends Person {
Mother(){
super("김xx",20);
}
}
부모클래스 Person
package day06.super_;
public class Person {//부모클래스로 사용
String name;
int age;
Person(String name){
this(name, 1);//두개짜리 생성자 호출
}
Person(String name, int age){
//super();-적지 않아도 생성되어 있다.
this.name=name.toUpperCase();
this.age=age;
System.out.println("100줄짜리 토드......");
}
String info() {
return "이름:" + name + ", 나이:"+ age;
}
}
자식클래스
package day06.super_;
public class Employee extends Person{
String department;//부서
Employee(String name, int age, String department){
super(name,age);
this.department=department;
}
String info() {
//super.메서드()- 오버라이딩된 메서드에서 부모님의 원형메서드가 필요할때 사용가능
return super.info()+ ", 부서:"+ department;
}
}
main
package day06.super_;
public class Main {
public static void main(String[] args) {
Mother m = new Mother();
System.out.println(m.info());
Employee e = new Employee("이xx", 30," 행정");
System.out.println(e.info());
Student s = new Student("최xx",23,"2348");
System.out.println(s.info());
Teacher t = new Teacher("지xx", 27, "수학");
System.out.println(t.info());
}
}
100줄짜리 토드......
이름:김XX, 나이:20
100줄짜리 토드......
이름:이XX, 나이:30, 부서: 행정
100줄짜리 토드......
이름:최XX, 나이:23, 학번:2348
100줄짜리 토드......
이름:지XX, 나이:27, 과목:수학
super()를 사용해서 부모클래스의 생성자를 가져옴