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 |