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

+ Recent posts