
부모 클래스에서 정의된 필드와 메소드를 자식클래스가 물려받는 것
Java는 다중 상속을 허용 X -> 부모클래스 오직 하나!
아래와 같이 클래스를 정의 했을 때, "말하기, 먹기, 걷기, 잠자기" 의 행동을 동일하게 사용함
Person이라는 부모클래스를 만들고,
Student, Researcher, … 클래스에서 상속받도록 하는 것!

public class Person {}
public class Researcher extends Person { // Person을 상속받는 Researcher 선언 }
public class Professor extends Person { // Person을 상속받는 Professor 선언 }
public class Student extends Person { // Person을 상속받는 Student 선언 }
자식 생성자의 맨 첫줄에 super() 가 숨겨져 있음
super() 가 컴파일 과정에서 자동으로 추가되면서 부모의 기본 생성자를 호출한다.
만약, 부모 클래스에 기본 생성자가 아닌 매개변수를 갖는 생성자만 있다면 super()에 매개변수를 넣어주어야 함!
부모, 자식 클래스의 필드가 public 인 경우
public class Person{
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
System.out.println("부모 클래스 Person(name, age) 생성자 실행");
}
}
public class Student extends Person{
public String campus;
public Student(String name, int age) {
super(name, age);
System.out.println("자식 클래스 Student(name, age) 생성자 실행");
}
부모, 자식 클래스의 필드가 private 인 경우
public class Person{
private String name;
private int age;
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
}
public class Student extends Person{
private String campus;
public Student(String name, int age) {
setAge(age);
setName(name);
}
public String getCampus() {
return campus;
}
public void setCampus(String campus) {
this.campus = campus;
System.out.println(campus + "캠퍼스에서 공부 중");
}
}
부모 클래스의 메소드를 자식 클래스에서 재정의 하는 것
메소드의 이름, 매개변수 타입 및 개수, 리턴 타입 등 모든 것을 동일하게 작성
@Override - 컴파일시 정확히 오버라이딩 되었는지 확인하는 어노테이션으로 생략 가능함.