기존의 코드에서 확장시켜나가는 것으로 자바에서는 extends를 통해서 확장시킬 수 있다.
여기서, 부모 클래스는 슈퍼 클래스로 부르고, 자식 클래스는 서브 클래스로 부른다.
public class 클래스명 extends 부모클래스명 {
... 내용 구현 ...
}
부모클래스를 상속받은 자식 클래스의 인스턴스는 부모클래스의 멤버와 자식클래스의 멤버를 모두 가지고 생성된다.
주의할 점은 부모클래스 멤버는 접근지정자(public, private, protected, default)에 따라 자식클래스에서의 접근 범위가 달라진다.
부모클래스의 public과 protected 멤버에 대해서는 자식클래스에서 어디서나 직접 접근하여 사용 할 수 있다. (○)
부모클래스의 private 멤버에 대해서는 자식클래스에서 직접 접근하여 사용할 수 없다. (X)
부모클래스의 default(생략) 멤버는 동일 패키지에 있는 자식클래스에서는 접근 가능하나, 다른 패키지에 있는 자식클래스에서는 직접 접근할 수 없다. (△)
[출처](https://kadosholy.tistory.com/97
◎ 자바에서 모든 클래스(Class)는 직접 또는 간접적으로 Object Class에서 상속받는다. 자바에서 상속받지 않는 클래스를 작성하면 기본적으로 Object 클래스에서 자동으로 상속된다.
◎ 자바에서는 부모의 부모(조부모; GrandParent) 클래스에 직접 접근할 수 없다.(not directly accessible, c++에서는 :: 연산자를 사용하여 접근 가능하다.) 부모의 부모 클래스에 접근하기 위해서는 부모 클래스를 통해 접근할 수 있다.
◎ 상속받지 않은 다른 클래스에서 protected 멤버에 접근할 수 있다.(클래스가 같은 패키지에 존재 해야한다.)
◎ 자바에서 상속은 extends 키워드를 사용한다. C++과 달리 public, protected, private과 같은 지정자를 제공하지 않는다.
◎ 자바에서 메소드는 기본적으로 가상(Virtual) 메소드입니다. C++에서는 virtual 키워드를 명시적으로 사용해야 한다.
◎ 자바는 추상클래스(abstract)와 인터페이스(interface)를 구분된 키워드로 사용한다.
◎ 자바는 다중 상속(둘 이상의 클래스에서 상속)을 지원하지 않는다. C++은 지원한다.
부모 클래스의 모든 멤버가 상속되는 것은 아니다.
자손 클래스에서 부모 클래스로부터 물려받은 메서드를 다시 작성하는 것
오버라이딩 조건
슈퍼 클래스 메서드의 원형(메서드 이름, 인자 타입 및 개수, 리턴 타입) 동일하게 작성
오버라이딩으로 다형성 실현
자바에는 상속이란 기능이 있는데, 자바의 상속은 C/C++에 비해서 덜하지만 상속이란 기능을 제대로 익혀야 할 필요가 있다. 프로그래밍을 제대로 익히려면 하나의 언어라도 깊게 파야 다른 언어를 이해하는데 도움이 될 것이다. 프로그래밍 언어 체계는 대부분 C 언어 계열에 영향을 받았기 때문이다.
일단, 한국 IT교육원에서 하는 자바 특강을 마무리함으로써 느꼈던건 전체 기간 중에서 이틀 밖에 듣지 못했지만, 개인적으로 나는 백엔드의 대표적인 기술 중의 하나인 스프링부트를 제대로 이해하려면 자바가 자바스크립트와 다른 점을 이해해야 할 필요가 있다.