상속(Inheritance)
객체 지향 주요 개념(Encapsulation,Polymorphism, Inheritance) 중 하나
상속을 하는 이유
1. 재사용성 증대 : 개발의 생산성 즉 부모로부터 변수와 메서드를 상속받아 재사용
2. 계층구조형성 : 다형성(Polymorphism) 적용 환경
특징
is a relationship
사람은 동물이다. 엔지니어는 직원이다.
참고) has a relationship : 사람이 자동차를 소유하다
Java는 단일 상속이다. (다중상속의 장점은 인터페이스로 처리한다.)
Java keyword : extends
class Person extends Animal{}
동물 객체를 사람이 상속 받는다.
부모 클래스를 super or parent class 로 표현
자식 클래스를 sub or child class로 표현한다.
접근 제어자
public > protected > default > private
public : 어디서나 접근 가능
protected : 같은 팩키지 내에서만 접근가능 상속관계시에는 어디서나 접근가능
[default] : 같은 팩키지 내에서만 접근가능
private : 자신의 클래스 내에서만 접근가능
상속시 접근제어자
부모의 private member 에 직접 접근할 수 없다.
반드시 public set/get method를 통해 간접접근해야 한다
상속시 생성자
super keyword: super.멤버 -> 부모 멤버에 접근
super(); -> 부모 생성자 호출
(1)
class A{}
class B extends A{}
class C extends B{}
new C();
* new C(); 가 호출되면 A 객체 -> B 객체 -> C 객체 순으로 생성된다.
C(){
// super() 를 명시하지 않으면 실행 첫부분에 컴파일러가 삽입
super();
}
(2)
class Parent{
Parent(int i){}
}
class Child extends Parent{
/*
Child(){
super();
}
*/ // compile error
Child(){
//super()를 명시
super(정수형데이터);
}
}
'Programming > java' 카테고리의 다른 글
[java] 예외처리(Exception) (0) | 2014.09.17 |
---|---|
[java] Generic (0) | 2014.09.17 |
[java] 오버로딩과 오버라이딩 (0) | 2014.09.17 |
[java] JavaSE 환경설정 (0) | 2014.09.17 |
[java] serialVersionUID를 선언하는 이유 (0) | 2014.09.02 |