새로운 클래스를 정의할 때 이미 구현된 클래스를 상속받아 속성이나 기능을 확장하여 클래스를 구현이 가능하다.
원래의 클래스 보다 구체적인 기능을 구현하고자 할 때 사용한다.
Extends를 이용하여 상속받는다.
Ex)
Class B extends A{
} //B가 하위 클래스 A가 상위 클래스
상위 클래스에 선언된
private멤버 변수는 하위 클래스에서 접근할 수 없기 때문에 외부 클래스는 접근할 수 없지만, 하위 클래스는 접근할 수 있도록protected를 주로 사용한다.
하위 클래스에서 가지는 상위클래스에 대한 참조 값
Super()로 상위 클래스의 기본 생성자를 호출한다.super()가 자동으로 호출된다.super(a,b)처럼 형식을 맞추어 호출이 가능하다.상위 클래스로 변수를 선언하고 하위 클래스의 생성자로 인스턴스를 생성한다.
Ex) 나는 사각형이지만 정사각형에 해당하는 것만 쓸게
상속 관계에서 모든 하위 클래스는 상위 클래스로 형변환이 가능하다.
메서드의 이름은 주소값을 나타낸다.
메서드는 명령어의 set이고 프로그램이 로드되면 메서드 영역에 명령어 set이 위치한다.
해당 메서드가 호출되면 명령어 set이 있는 주소를 찾아 명령어가 실행된다.
이때 메서드에서 사용하는 변수들은 스택 메모리에 위치하게 된다.
인스턴스가 생성되면 변수는 힙 메모리에 따로 생성되지만 메서드 명령어 set은 처음 한 번만 로드 된다.
업 캐스팅된 클래스를 다시 원래의 타입으로 변환하는 것이다.
하위 클래스로의 형 변환은 반드시 명시적으로 해야 한다.