상속(Inheritance)
- 기존의 class에 정의된 변수나 메소드를 재사용하여 새로운 class를 만드는 것
- Java는 class간의 상속에서는 단일상속을 지원, 다른 객체지향언어는 주로 다중상속을 지원
- 상속의 사용
ex) public class Animal { }
public class Human extends Animal : [제한자]class 식별자 extends 부모class이름 { }
- 상위 클래스의 객체와 하위 클래스의 객체는 동일한 곳에 생성되는 것이 아니라 상위클래스 객체 따로 하위클래스 객체 따로 생성되며 하위 클래스는 상위 클래스의 속성과 메소드를 상속 받을 수 있도록 링크가 되어있어 상위 클래스의 속성과 메소드를 호출 할 수 있다.
- super는 상위 클래스의 생성자 호출 또는 상위 클래스의 객체를 참조하는 변수로 사용된다.
※ this의 역할
⑴ Overloading 생성자
⑵ 현재 일하는 메소드의 객체 – local
|
|
|
| Class : 동물 |
|
|
|
| |||
|
|
|
| 이름, 나이, 성별 |
|
|
|
| |||
|
|
|
| 잔다(), 배설한다() |
|
|
|
| |||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Class : 개 |
| Class : 고양이 |
| Class : 사람 | |||||||
종, |
| 종, |
| 혈액형, 국적 | |||||||
짓는다() |
| 할퀴다() |
| 공부한다(), 밥먹는다() |
Super
- 부모의 생성자 호출 시 사용
→ 부모 class의 생성자는 상속이 불가능하지만 자식 class의 생성자에서 부모의 생성자 호출은 가능하다.
- 상속
→ 인스턴스 변수, 메소드, 생성자, but 생성자는 클래스 이름과 같아야 하므로 상속 불가능
- 구문 : super([argument, ]); → 생성자 구현부의 첫 번째 명령어로 위치해야한다. this와 같이 사용 불가능, 생성자 구현부에 this()나 super() 코드가 없으면 super();→ 부모의 no-argument 생성자 호출 하는 코드가 자동으로 들어간다.
- 객채의 참조변수로서의 super
→ 하위 class의 객체에서 부모 class의 객체를 참조하는 참조변수
→ Overriding 메소드에서 부모에 정의된 원본 메소드 호출시
Method Overriding(메소드 재정의)
- 하위 class에서 부모 class에 정의된 메소드의 구현을 재정의 하는 것
- 규칙
- 전제 : 상속관계
⑴ 이름, return type, 매개변수가 같아야한다.
→ 이름이 같고 매개변수가 다르면 메소드 오버로딩
⑵ 접근제한자의 범위가 부모와 같거나 더 넓어야한다.
(public > protected > default > private)
⑶ Exception 관련 규칙
'Wanna be a Programmer > Java Programming' 카테고리의 다른 글
Java Programming - 의존관계(Dependency), Final (0) | 2012.07.02 |
---|---|
Java Programming - 다형성(Polymorphism), Heterogeneous Collection (0) | 2012.07.02 |
Java Programming - Static vs Instance, 접근제한자 (0) | 2012.07.02 |
Java Programming - 패키지, Import, JAVA 소스 파일 구조 (0) | 2012.07.02 |
Java Programming - 조건문, 반복문, 배열 (0) | 2012.07.01 |