1. 상속(inheritance)
- 상속이란?
- 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것.
- 두 클래스를 조상과 자손으로 관계를 맺어주는 것.
- 자손은 조상의 모든 멤버를 상속받는다. ( 생성자 , 초기화블럭 제외)
- 자손의 멤버개수는 조상보다 적을 수 없다. ( 같거나 많다.)
<덧붙임>
- 상속의 장점
적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할
수 있기 때문에 코드의 추가 및 변경이 용이함
즉, 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과
유지보수에 크게 기여함.
2. 클래스간의 관계
- 상속관계 (inheritance)
- 공통부분은 조상에서 관리하고 개별부분은 자손에서 관리한다.
- 조상의 변경은 자손에 영향을 미치지만, 자손의 변경은 조상에 아무런 영향을 미치지 않는다.
class Parent {}
class Child extends Parent {}
class Child2 extends Parent {}
class GrandChild extends Child {}
- 포함관계 (composite)
- 한 클래스의 멤버변수로 다른 클래스를 선언하는것
- 작은 단위의 클래스를 먼저 만들고 , 이 들을 조합해서 하나의 커다란 클래스를 만든다.
3. 클래스간의 관계결정하기
- 상속 vs 포함
- 가능한 많은 관계를 맺어주어 재사용성을 높이고 관리하기 쉽게 한다.- 'is-a'와 'has-a'를 가지고 문장을 만들어 본다.
원(Circle)은 점(Point)이다. - Circle is a Point.원(Circle)은 점(Point)을 가지고 있다. - Circle has a Point.
상속관계 - '~은 ~이다. (is-a)'포함관계 - '~은 ~을 가지고 있다.(has-a)'
4. 단일 상속 ( single inheritance )
- Java는 단일상속만을 허용한다. (C++ 은 다중상속 허용)
class TVCR extends TV , VCR {}
이런식의 다중 상속을 허용하지 않는다.
<덧붙임> 다중상속의 문제점
- 클래스 간의 관계가 매우 복잡해진다.
- 상속받은 멤버 간의 이름이 같을 경우 구별할 수 있는 방법이 없다.
5. Object 클래스 ( 모든 클래스의 최고조상 )
- 조상이 없는 클래스는 자동적으로 Object 클래스를 상속받게 된다.- 상속계층도의 최상위에는 Object 클래스가 위치한다.
- 모든 클래스는 Object 클래스에 정의된 11개의 메서드를 상속받는다.
toString() , equals(Object obj) , hashCode(), ...
<덧붙임> 상속 예제
[참조] http://choijava.blogspot.kr/2013/08/java_8678.html?view=sidebar
'Dev. Java' 카테고리의 다른 글
[자바 기본기] 오버라이딩 (0) | 2014.05.16 |
---|---|
자바 split 메소드로 문자열 분할하기 (0) | 2014.05.15 |
문자열 입력과 출력 (Scanner) (0) | 2014.05.13 |
[자바 기본기] 변수의 초기화 (0) | 2014.05.11 |
public static void main(String[] args) 의미는? (0) | 2014.05.10 |