상속은 자신에게 없는 것을 물려받는 것을 의미한다. A라는 클래스를 상속 받게되면, B클래스는 A클래스가 가지고 있는 속성(필드, 메소드)을 그대로 물려받게 된다. 상속을 통해, B클래스는 A클래스의 객체를 생성하지 않고도, A클래스의 필드와 메소드에 접근할 수 있게 된다. 이때 A클래스를 super-class, B클래스를 sub-class 라고 부른다.
extends 키워드를 사용하여 상속을 할 수 있다.
class A extends B {
}
이와 같다면 A클래스는 B를 상속받는다.
class ClassA {
private int a;
public ClassA() {
this.a = 10;
}
public void displayA() {
System.out.println(a);
}
}
public class StudyJava extends ClassA {
public static void main(String[] args) {
StudyJava sj = new StudyJava();
sj.displayA();
}
}
static 메소드 안에서는 인스턴스 메소드를 직접 호출할 수 없다. 때문에, static 메소드인 main() 메소드 안에서 StudyJava 클래스의 객체를 호출해 주어야 한다. 하지만 ClassA를 상속받았기 때문에 StudyJava 클래스 내부에 private int a 필드와 displayA() 메소드가 존재하는 것으로 간주한다. 따라서 StudyJava 클래스의 객체만으로 ClassA 내부에 있는 필드와 메소드에도 접근이 가능한 것이다.