객체 지향 프로그래밍에서는 부모 클래스의 멤버를 자식 클래스에게 상속해 줄 수 있다. 상속은 이미 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여준다. 그리고 부모 클래스의 수정으로 모든 자식 클래스들도 수저오디는 효과를 가져오기 때문에 유지 보수 시간을 최소화 할 수 있다.
자식 클래스를 선언할 때 어떤 부모 클래스를 상속받을 것인지 결정하고, 선택된 부모 클래스는 extends 뒤에 기술한다.
ex)
class 자식클래스 extends 부모클래스 {
//필드
//생성자
//메소드
}
부모의 생성자를 호출할 때 부모 생성자에 매개변수선언이 있다면 super(); 를 사용한다.
ex)
부모클래스 = public People(String name, String ssn)
자식클래스 = public Student(String name, String ssn)
super(name, ssn);
super(); 는 부모생성자를 호출하는 역할이다. 자식 생성자의 맨 첫 줄에서 호출된다.
상속된 일부 메소드는 자식 클래스에서 다시 수정해서 사용할 수 있다.
super 키워드를 붙여서 부모 메소드를 호출할 수 있다.
ex)
super.부모메소드();
final 키워드가 붙은 클래스는 최종적인 클래스이므로 상속할 수 없는 클래스가 된다. 마찬가지로 final 키워드가 붙은 메소드는 자식 클래스에서 재정의(오버라이딩)할 수 없다.
protected 접근 제한자는 같은 패키지 내에서는 default와 같이 접근 제한이 없지만, 다른 패키지에서는 자식 클래스만 접근을 허용한다. 여기서 다른 패키지에 있는 자식 클래스가 생성자를 호출할때는 super()를 이용한다.