
자식클래스가 부모클래스에서 상속
부모 클래스(parent class)를 '상위클래스', 자식 클래스를 '하위 클래스' 등으로 부르기도 합니다.
class 하위클래스 extends 상위클래스{
//하위클래스는 상위클래스에 정의된 자원들을 사용가능
}
//A클래스(부모클래스)
public class A {
int numA= 10;
}
//B클래스(자식클래스)
public class B extends A {
}
//main
public class Ex01 {
public static void main(String[] args) {
B b = new B();
System.out.println(b.numA);
}
}

super : 상위 클래스객체의 주소값이 있는 지역변수super() : 상위클래스의 생성자 함수를 클래스 내부에서 호출할때 사용this : 현재 클래스의 객체의 주소값this() : 현재 클래스의 생성자 함수를 클래스 내부에서 호출할때 사용public class A {
}
- - - - - - - - - - - - - - - - - - - - -
public class B extends A{
public B(){
super();
}
}
- - - - - - - - - - - - - - - - - - - - -
public class C extends B{
public C(){
super();
}
}
c()생성자 👉 super() 👉 B()생성자 👉 super() 👉 A()성자
public class Student {
protected int id;
protected String name;
public Student(int id, String name){
this.id = id;
this.name = name;
}
}
----------------------------------------
public class HighSchoolStudent extends Student{
public HighSchoolStudent(){
}
@Override
public String toString() {
return "HighSchoolStudent{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
상위클래스(Student)에는 매개변수를 가지고있는 메서드가 정의되어있기 때문에 하위클래스(HighSchoolStudent)에서 매개변수가없는 super를 정의하게된다면, 오류가 발생한다.
그렇기 때문에 아래와 같은 방법을 상황에맞게 선택해서 해결해야한다.
1. 상위클래스에서 매개변수가없는 생성자를 정의하기
2. 하위클래스 생성자 내부에 매개변수가있는 super() 정의하기.
public class Student {
protected int id;
protected String name;
// 1. 상위클래스에서 매개변수가없는 생성자를 정의하기
public Student(){]
// 2. 하위클래스 생성자 내부에 매개변수가있는 super() 정의하기.
public Student(int id, String name){
this.id = id;
this.name = name;
}
}
----------------------------------------
public class HighSchoolStudent extends Student{
// 1. 상위클래스에서 매개변수가없는 생성자를 정의하기
public HighSchoolStudent(){}
// 2. 하위클래스 생성자 내부에 매개변수가있는 super() 정의하기.
public HighSchoolStudent(){
super(15,"이름");
}
@Override
public String toString() {
return "HighSchoolStudent{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}