1. 상속(inheritance) 정의
- 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것
- 두 클래스를 조상과 자손으로 관계를 맺어주는 것.
- 조상 클래스 : 부모(parent)클래스, 상위(super)클래스, 기반(base)클래스
- 자손 클래스 : 자식(child)클래스, 하위(sub)클래스, 파생된(derived)클래스
- 자손은 조상의 모든 멤버를 상속받는다. (생성자, 초기화블럭 제외)
- 자손의 멤버개수는 조상보다 같거나 많다.
- 적은 양의 코드로 새로운 클래스를 작성할 수 있다.
- 상속 구현 : 클래스 새로작성하는클래스명 extends 상속받고자하는클래스명 { // ... }
2. 클래스간의 관계 - 상속 관계(inheritance) , is a
- 코드를 공통적으로 관리하기 때문에 코드의 추가 및 변경이 매우 용이하다.
- 조상클래스의 변경이 있으면 자손클래스는 영향을 주지만, 자손클래스가 변경되는 것은 조상클래스에 아무런 영향을 주지 않는다.
- 자손클래스의 인스턴스를 생성하면 조상클래스의 멤버와 자손 클래스의 멤버가 합쳐진 하나의 인스턴스로 생성된다.
3. 클래스간의 관계 - 포함 관계(composite) , has a
- 한 클래스의 멤버변수로 다른 클래스를 선언하는 것
- 작은 단위의 클래스를 먼저 만들고, 이 들을 조합해서 하나의 커다란 클래스를 만든다.
4. 클래스간의 관계 결정하기 - 상속 or 포함
- 가능한 한 많은 관계를 맺어주어 재사용성을 높이고 관리하기 쉽게 한다.
- 'is-a' 와 'has-a'를 가지고 문장을 만들어 본다.
5. 단일상속(single inheritance)
- 자바에서는 단일 상속만을 허용한다.
- 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다.
6. Object 클래스
- 모든 클래스의 상속계층도의 제일 위에 위치하는 조상클래스이다.
- 다른 클래스로부터 상속 받지 않는 모든 클래스들은 자동적으로 Object 클래스로부터 상속받는다.
- toString(), equals() 와 같은 모든 인스턴스가 가져야 할 기본적인 11개의 메서드가 정의되어 있다.
class InheritanceCellPhone {
String model;
String number;
int chord;
public void setNumber(String n) {
number = n;
}
public String getModel() {
return model;
}
public int getChord() {
return chord;
}
public String getNumber() {
return number;
}
} // InheritanceCellPhone
class InheritanceD_caPhone extends InheritanceCellPhone {
String pixel;
public InheritanceD_caPhone(String model, String num, int chord,
String pixel) {
this.model = model;
number = num;
this.chord = chord;
this.pixel = pixel;
}
} // InheritanceD_caPhone
class InheritanceMP3Phone extends InheritanceCellPhone {
int size;
public InheritanceMP3Phone(String model, String num, int chord, int size) {
this.model = model;
number = num;
this.chord = chord;
this.size = size;
}
} // InheritanceMP3Phone
public class InheritanceCellPhoneTest {
public static void main(String[] args) {
InheritanceD_caPhone dca = new InheritanceD_caPhone("IN-7600", "011-9XXX-9XXXX", 60, "400만");
InheritanceMP3Phone mp = new InheritanceMP3Phone("KN-600", "011-9XXX-9XXXX", 60, 256);
System.out.println(dca.getModel() + ", " + dca.getChord() + ", " + dca.getNumber());
} // main
} // InheritanceCellPhone
'Java > Java SE' 카테고리의 다른 글
| Java super, super() (0) | 2013.08.06 |
|---|---|
| Java 오버라이딩(overriding) (0) | 2013.08.05 |
| Java 배열(array) (0) | 2013.08.04 |
| Java 난수를 발생시키는 2가지 방법 (0) | 2013.08.03 |
| Java 메서드 오버로딩(method overloading) (0) | 2013.08.01 |