쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/ssangyonng.git 에 올려두었습니다.
상속(inheritance)
상속(inheritance)은 OOP 언어 3가지 특징 중 하나이다.
상속을 하게 되면 중복코드를 줄일 수 있다. (코드의 재사용성 향상)
클래스의 계층 생성은 부모, 자식이 나뉘어 진다.
부모는 모든 자식이 가져야 할 공통 특징을 구현하고
자식은 부모 클래스가 제공하는 공통 특징을 사용하고 부모가 없는 자신만의 기능을 추가한다.
생성자는 상속되지 않고, private method는 사용할 수 없다.
상속 클래스에서는 extends 키워드를 사용하여 자식이 부모를 선택한다.
( extends는 자식 클래스에서 기능 확장할 부모 클래스를 선택하는 것 )
extends 문법)
접근 지정자 class 클래스명 [extends 부모 클래스]
// 부모클래스가 final 접근 지정자를 가지면 상속이 되지 않는다.
// => 나는 더 이상 자식을 가지지 않는다라는 뜻
// 자식 클래스를 생성하면, 부모 클래스부터 생성한다. ( super() )
자바는 단일 상속만 지원하고 다중 상속을 지원하지 않는다.
모든 클래스의 부모 클래스는 java.lang.Object이다.
단일 상속
장점은 부모가 명확하고 객체의 크기가 필요 이상 커지지 않는다.
단점은 부모의 기능 이외에 다른 기능을 사용할 때 불편하다.
다중 상속
장점은 부모의 기능 이외에 다른 기능을 사용할 때 편하다.
단점은 부모가 불명확하고 객체의 크기가 필요 이상 커질 수 있다.
단일 상속 예
걸어다니는 것 => 포유류 => 사람
모든 사람, 걸어다니는 것, 포유류의 공통 특징은 각각의 클래스에서 정의를 한다.
다중 상속 예
걸어다니는 것 => 사람 <= 날라 다니는 것
걸어다니는 것, 날라 다니는 것의 공통 특징을 사람이 상속 받는다.
오버라이드(Override)
부모가 제공하는 기능이 맞지 않으면 자식에서 부모의 기능을 변경하여 사용하는 것이다.
상속 관계에서 자기 클래스 자원을 사용하려면 this 키워드를 사용한다.
상속 관계에서 부모 클래스의 자원 사용하려면 super 키워드를 사용한다.
키워드 형식, method 형식으로 사용한다.
this,super 형식 문법
//자신의 기본 생성자 호출
this();
//자신의 매개 변수 있는 생성자 호출
this(매개 변수에 맞는 값);
//this 키워드
this.변수명;
//this method 형
this.method명();
//부모의 기본 생성자 호출
//모든 클래스의 생성자는 첫 번째 줄에 super() 숨어있다.
super();
//부모의 매개 변수 있는 생성자 호출
super(매개 변수에 맞는 값);
//super 키워드
super.변수명;
//super method 형
super.method명();
상속 관계 자원 사용 순서
1. 상속인 경우 자식클래스로 객체 생성
Child c = new Child(); (extends로 Parent로 상속받은 상태)
2. 스택에는 c의 힙의 주소 값을 가진다.
3. 힙에는 오브젝트, 부모의 값, 자식의 값 순서대로 쌓는다.
힙에서 자식의 시작 주소는 this, 부모의 시작 주소는 super이다.
자식과 같은 변수명인 부모의 변수를 사용하려면 부모의 시작주소부터 검색하면 된다.
=>super.변수명
'성장 일기 > 쌍용교육센터' 카테고리의 다른 글
1223/클래스 사용 (0) | 2022.12.23 |
---|---|
1222/Override, Interface (0) | 2022.12.22 |
1220/배열 (0) | 2022.12.20 |
1219/배열 (0) | 2022.12.19 |
1216/String (0) | 2022.12.16 |