Programming/java

[java] 상속(Inheritance)

성일만 2014. 9. 17. 14:27

상속(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