관리 메뉴

Jsecurity

Java 9일차 : 상속(inheritance) 본문

프로그래밍언어/Java_Language

Java 9일차 : 상속(inheritance)

Great king 2018. 11. 14. 13:44

※상속 (inheritance)


객체 지향의 상속
부모클래스에 만들어진 필드, 메소드를 자식클래스가 물려받음 
부모의 생물학적 특성을 물려받는 유전과 같은 의미

상속을 통해 간결한 자식 클래스 작성
동일한 특성을 재정의할 필요가 없어 자식 클래스가 간결해짐



객체 지향에서 상속의 장점

클래스의 간결화, 멤버의 중복 작성 불필요
클래스 관리 용이 , 클래스들의 계층적 분류
소프트웨어의 생산성 향상, 클래스 재사용과 확장 용이, 새로운 클래스의 작성 속도 빠름




자바의 상속 선언

public class Person {

...

}

public class Student extendsPerson { // Person을상속받는 클래스 Student선언

...

}

public class StudentWorker extendsStudent { // Student를상속받는 StudentWorker 선언

...

}



부모 클래스 -> 슈퍼 클래스(super class)로 부름

자식 클래스 -> 서브 클래스(sub class)로 부름

extends 키워드 사용

슈퍼 클래스를 확장한다는 개념





자바 상속의 특징


클래스의 다중 상속 지원하지 않음상속 횟수 무제한

상속의 최상위 조상 클래스는 java.lang.Object 클래스

모든 클래스는 자동으로 java.lang.Object를 상속받음

자바 컴파일러에 의해 자동으로 이루어짐




상속과 접근 지정자


- 상속 관계에서 주의할 접근 지정자는 private protected

슈퍼 클래스의 private 멤버는 다른 모든 클래스에 접근 불허 클래스내의 멤버들에게만 접근 허용

슈퍼 클래스의 디폴트 멤버는 패키지내 모든 클래스에 접근 허용

슈퍼 클래스의 public 멤버는 다른 모든 클래스에 접근 허용

슈퍼 클래스의 protected 멤버
같은 패키지 내의 모든 클래스 접근 허용 다른 패키지에 있어도 서브 클래스는 슈퍼 클래스의 protected 멤버 접근 가능




서브 클래스 / 슈퍼 클래스의 생성자 호출 및 실행




new에 의해 서브 클래스의 객체가 생성될 때

슈퍼클래스 생성자와 서브 클래스 생성자 모두 실행됨

호출 순서
서브 클래스의 생성자가 먼저 호출, 서브 클래스의 생성자는 실행 전 슈퍼 클래스 생성자 호출
실행 순서
슈퍼 클래스의 생성자가 먼저 실행된 후 서브 클래스의 생성자 실행





Comments