상속

|

기존의 객체를 그대로 유지하면서 어떤 기능을 추가하는 맥락에서 등장한 것이 상속.

기존의 객체는 기능을 물려준다는 의미에서 부모객체.

새로운 객체는 기존 객체의 기능을 물려받는다는 의미에서 자식 객체.

 

부모 클래스와 자식 클래스의 관계를 상위(super) 클래스와 하위(sub) 클래스라고 표현하기도 한다.

또한 기초 클래스(base class), 유도 클래스(derived class)라고도 부른다. 

 

슈퍼클래스로 하위 클래스를 여러 개 만들 수 있지만, 하위클래스가 상속받을 수있는 슈퍼 클래스는 하나뿐.(단일상속)

클래스를 상속하려면 'extends' 라는 단어를 사용한다.

 

상속을 통해서 코드의 중복을 제거할 수 있었고,

또 부모 클래스을 개선하면 이를 상속받고 있는 모든 자식 클래스들에게 그 혜택이 자동으로 돌아간다.

다시 말해서 유지보수가 편리해진다는 것이다.

재활용성과 중복의 제거, 그리고 유지보수의 편의는 서로 다른 목적으로 가지고 있지만, 하나가 좋아지면 자연스럽게 다른 쪽도 좋아지는 관계에 있다는 것이다.

 

############### 상속과 생성자 ##################

생성자가 존재하지 않으면 자동으로 기본생성자로 설정.

매개변수가 있는 생성자가 있을 때는 자동으로 기본 생성자를 만들어주지 않는다.

 

############### super ##################

자신의 상위클래스를 지칭할 때 사용하는 예약어

상위클래스의 생성자를 호출할수 있다.

This와 마찬가지로 Super.메소드/변수 명으로 상위클래스의 메소드, 변수에 접근 할수있다.(단, 상속된것에만 가능)

ex. super.name

 

하위 클래스 내에서 super는 슈퍼 클래스를 의미함.

슈퍼클래스의 메소드를 하위클래스에서 오버라이딩할때는 해당 메소드의 이름과 인자, 리턴값은 그대로 선언하고 {}안의 처리명령만 변경하여 작성하면 됨.

super를 활용하면 부모 클래스의 기본 생성자가 없어져도 오류가 발생하지 않음.

 

하위 클래스의 생성자에서 super를 사용할 때 주의할 점은 super가 가장 먼저 나타나야 한다는 점이다.

즉 부모가 초기화되기 전에 자식이 초기화되는 일을 방지하기 위한 정책.

 

<예시>

super.printInfo();       슈퍼클래스 안의 printInfo 메소드를 호출한다.

'Java' 카테고리의 다른 글

클래스 패스  (0) 2019.05.29
오버라이딩(Overriding) 과 오버로딩(Overloading)  (0) 2019.05.23
초기화와 생성자  (0) 2019.05.23
유효범위  (0) 2019.05.23
객체 지향 프로그래밍  (0) 2019.05.21
And