더 많이 실패하기

코딩공부 54일차: 자바의 정석 / 자바의 정석 70~74강 본문

자바/자바의정석

코딩공부 54일차: 자바의 정석 / 자바의 정석 70~74강

김발자~ 2022. 9. 22. 22:52
반응형

개발 공부 54일차

자바의 정석 기초편 강의

https://www.youtube.com/watch?v=oJlCC1DutbA&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 

 

 

총 171개의 강의로 구성되어 있다

총 강의 시간은 80시간 정도

 

 

강의는 기초편을 기준으로 제작되어 있지만,

http://www.yes24.com/Product/Goods/24259565

 

Java의 정석 - YES24

최근 7년동안 자바 분야의 베스트 셀러 1위를 지켜온 `자바의 정석`의 최신판. 저자가 카페에서 12년간 직접 독자들에게 답변을 해오면서 초보자가 어려워하는 부분을 잘 파악하고 쓴 책. 뿐만 아

www.yes24.com

링크로 첨부한 자바의 정석 3판으로도 무리가 없다는 댓글이 있어 그대로 진행

 

 

 

 

 


ch 7 - 1, 2 상속

(3판 기준 310~315쪽)


 

상속은 기존의 클래스로 새로운 클래스를 작성하는 것(코드의 재사용)
두 클래스를 부모와 자식으로 관계를 맺어주는 것

class 자식클래스 extends 부모클래스 {

}

자식클래스는 조상의 모든 멤버를 상속 받는다 (생성자, 초기화 블럭 제외)
자손의 멤버 개수는 조상보다 적을 수 없다(같거나 많다)

자손의 변경은 조상에 영향을 미치지 않는다

 

 

 


ch 7 - 3, 4 클래스 간의 관계, 상속과 포함

(3판 기준 316~323쪽)


 

클래스 관계에는 상속과 포함이 있다

포함이란?
클래스의 멤버로 참조변수를 선언하는 것
작은 단위의 클래스를 만들고, 이들을 조합해서 클래스를 만든다

예시
class Circle {
  Point c = new Point();  //Circle이 Point를 포함
  int r;
}
(그림 그려보기)


클래스 간의 관계 결정하기

상속관계 '~은 ~이다 (is-a)'
포함관계 '~은 ~을 가지고 있다 (has-a)'

대부분이 포함관계(상속관계인 경우는 드물다)

예제 등에서 코드를 봤을 때 그 과정을 그려봐야 프로그래밍(설계(90%)+코딩)에서 가장 중요한 설계 능력을 기를 수 있다

 

 

 


ch 7 - 5, 6  단일 상속, Object 클래스

(3판 기준 323~326쪽)


 

단일 상속
Java는 단일상속만을 허용한다 (하나의 부모만 상속)
그래도 비중이 높은 클래스 하나만 상속관계로 하고 나머지는 포함관계로 처리하면 된다


Object클래스
모든 클래스의 조상
부모가 없는 클래스는 자동적으로 Object 클래스를 상속받는다 - 상속 계층도를 그리면 가장 위에 Object가 있다
모든 클래스는 Object 클래스에 정의된 11개의 메서드를 상속받는다(toString() 등)

 

 

 


ch 7 - 7~9 오버 라이딩

(3판 기준 327~329쪽)


 

오버 라이딩(덮어쓰기)
상속받은 조상의 메서드를 자신에 맞게 변경하는 것
내용(구현부)만 변경 가능하다(선언부 변경 불가)


오버라이딩의 조건
1 선언부가 조상 클래스의 메서드와 일치해야 한다
2 접근 제어자(public protected default private)를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다
3 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다


오버로딩 vs 오버라이딩
오버로딩: 기존에 없는 새로운 메서드를 정의하는 것 (이름이 같은 여러 개)
오버라이딩: 상속받은 메서드의 내용을 변경하는 것

 

 

 


ch 7 - 10, 11 참조변수 super, 생성자 super()

(3판 기준 330~335쪽)


 

참조변수 super (this랑 비슷)
객체 자신을 가리키는 참조변수
인스턴스 메서드(생성자) 내에만 존재
조상의 멤버를 자신의 멤버와 구별할 때 사용(조상에 super) ↔this는 iv, lv 구별

부모클래스에만 특정 변수가 있다면 super.변수와 this.변수는 같은 값일 수 있다


생성자 super()
조상의 생성자를 호출할 때 사용
조상의 멤버는 조상의 생성자를 호출해서 초기화 (생성자랑 초기화블럭은 상속되지 않음)

자손의 생성자에선 자신의 멤버만 초기화
조상의 멤버를 직접 초기화하지 않고 자손의 생성자 안에 super(변수1, 변수2, ...) 라고만 적어 조상의 생성자를 호출한다

추가조건 ★
생성자의 첫 줄에 반드시 생성자(this()나 super())를 호출해야 한다 ★★★
(=모든 생성자는 첫 줄에 다른 생성자를 호출 - 그래서 기본 생성자 만들어두는 습관 있으면 좋음)
그렇지 않으면 생성자의 첫 줄에 super();를 삽입한다

교재 332쪽 7-7 중요예제 - 반복해서 보기

 

 

 


 

반응형
Comments