자바 상속(Inheritance)
1) 상속의 개념과 특징
상속(Inheritance)이란 하나의 객체를 설계할 수 있는 구체(Concrete Class) 또는 단일 클래스를 또 다른 클래스가 기능 추가 및 변경, 특성을 추가하여 새로운 클래스로 정의하는 것을 말함
상속의 특징
선조가 후손에게 재산을 상속하듯이 클래스가 또 다른 클래스에 상속할 수 있음
클래스 간의 상속은 지정된 접근 제한자를 통해 상속하고 싶은 멤버 변수와 메소드를 또 다른 클래스에 그대로 전해 주는 것
자바에서 후손 클래스는 선조 클래스로부터 멤버 변수와 메소드를 상속받지만, 생성자는 상속받을 수 없음
자바에서 상속의 목적은 코드의 재사용성, 간결성, 확장성을 제공하는 것
2) 상속의 선언방법
선조 클래스와 후손 클래스는 extends라는 키워드를 통해 상속이 이루어 짐
자바의 상속은 선조 클래스를 하나만 둘 수 있는 단일 상속을 원칙으로 하며 선조 클래스가 하나 이상인 다중 상속은 지원되지 않음
형식
3) Super와 this
super 키워드 : 선조 클래스(superclass)를 의미함
this 키워드 : 현재 오브젝트를 지칭하는 후손(subclass)을 의미함
4) 서브클래싱
선조 클래스의 속성과 구조를 그대로 가지면서 새로운 데이터 멤버 변수와 멤버 메소드를 추가해서 코드의 재사용을 하는 것
5) Is a와 Has a
is a의 관계가 성립하는 관계에서 선조 클래스를 참조하는 참조변수에 후손 클래스를 참조하도록 할 수 있음
is a 관계는 오브젝트 배열에서도 사용할 수 있음
클래스는 자신의 데이터 멤버로 다른 클래스의 객체를 가질 수 있음 - 즉, 다른 클래스에 대한 참조변수를 포함하는 클래스를 작성할 수 있으며 “Has a”가 발생함
6) 오버라이딩
메소드 재정의라고도 하며 상속받은 후손 클래스에서 상속해 준 선조 클래스에 이미 정의되어 있는 메소드의 기능을 변경해서 새로 정의하는 것
오버라이드하고자 하는 메소드가 선조 클래스에 존재해야 함
선조에서 선언한 메소드가 후손에서 사용할 때 메소드 명이 반드시 같아야 함
메소드의 파라미터 개수와 데이터형이 같아야 함
메소드의 리턴 형이 같아야 함
선조 클래스의 메소드와 동일하거나 접근범위가 넓은 접근 제한자를 후손 클래스에서 선언해야 함
static, final, private 메소드는 오버라이딩을 할 수 없음
댓글 없음:
댓글 쓰기