더 많이 실패하기

코딩공부 53일차: 자바의 정석 / 자바의 정석 61~65강 본문

자바/자바의정석

코딩공부 53일차: 자바의 정석 / 자바의 정석 61~65강

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

개발 공부 53일차

자바의 정석 기초편 강의

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 6 - 30, 31 오버로딩

(3판 기준 283~290쪽)


 

오버로딩은 한 클래스 안에 같은 이름의 메서드를 여러 개 정의
대표적으로 println이 있다

오버로딩이 성립하기 위한 조건
1. 메서드 이름이 같아야 한다
2. 매개변수의 개수 또는 타입이 달라야 한다 반환타입은 무관)

 

 

 


ch 6 - 32~35 생성자, 기본 생성자

(3판 기준 291~295쪽)


 

생성자는 인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메서드'
즉, iv를 초기화하는 메서드

사용 예시
Time t = new Time(12, 34, 56);          //생성자 호출


생성자
생성자 이름은 클래스 이름과 같아야 한다
리턴값이 없다(void x)
모든 클래스는 반드시 1개 이상의 생성자를 가진다


기본생성자

매개변수가 없는 생성자

클래스이름( ) { }     //기본 생성자

생성자가 하나도 없다면 컴파일러가 자동으로 추가
클래스 만들 땐 기본생성자를 적어주는 습관을 들이는 게 좋다


매개변수가 있는 생성자
Time t = new Time(12, 34, 56);          //매개변수가 있는 생성자 호출
1 Time t : 참조변수 t 생성
2 new : 객체 생성
3 Time(12, 34, 56): Time(12, 34, 56) 생성자(객체 초기화) 호출
4 =: 객체의 주소가 참조변수 c에 대입

 

 

 


ch 6 - 36, 37 생성자 this(), 참조변수 this

(3판 기준 295~299쪽)


 

생성자 this()
생성자에서 다른 생성자를 호출할 때 사용
다른 생성자 호출 시 첫 줄에서만 사용가능

 

 

아래 Car()가 다른 생성자 Car(String c, String g, int d)를 호출할 때

 

1
2
3
4
5
6
7
8
9
10
11
Car() {
    color = "white";
    gearType = "auto";
    door = 4;
}
 
Car(String c, String g, int d) {
    color = c;
    gearType = g;
    door = d;
}
cs

 

↓ this를 사용하여 코드의 중복을 줄인다

 

1
2
3
4
5
6
7
8
9
Car() {
    this("white", "auto", 4);
}
 
Car(String c, String g, int d) {
    color = c;
    gearType = g;
    door = d;
}
cs

 

 

 

참조변수 this          (생성자 this()와 전혀 다르다)
인스턴스 자신을 가리키는 참조변수
인스턴스 메서드(생성자 포함)에서 사용가능 (클래스 메서드는 객체가 없을 수 있기 때문에 사용불가)
지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용

원래 iv는 참조변수.변수이름으로 써야 하지만 같은 클래스 내에서는 참조변수를 생략할 수 있으므로 왼쪽같이 쓸 수 있다 

 


ch 6 - 38~41 변수의초기화, 멤버변수의 초기화

(3판 기준 300~307쪽)


 

지역변수(lv)는 수동 초기화해야 함(사용 전에 꼭!)
멤버변수(iv, cv)는 자동 초기화된다


멤버변수의 초기화
1. 명시적 초기화(=)    //대입 변산자(선언 시 초기화) (간단한 초기화)

 

1
2
3
4
class Car {
    int door = 4;                    //기본형 변수의 초기화
    Engine e = new Engine();        //참조형 변수의 초기화
}
cs

 

*참조형 변수는 null값과 객체주소 중 하나를 가질 수 있다

 

2. 초기화 블럭 (복잡한 초기화)
인스턴스 초기화 블럭: { } //iv 초기화 (덜 중요)
클래스 초기화 블럭 : static { } //cv 초기화

3. 생성자 (복잡한 초기화)
iv 초기화

 

 

멤버변수의 초기화
클래스 변수(cv) 초기화 시점: 클래스가 처음 로딩될 때 단 한 번
인스턴스 변수(iv) 초기화 시점: 인스턴스가 생성될 때마다

초기화 순서
cv → iv
자동 → 간단 → 복잡 

 

 

 


6장 끝!

6장 내용을 간단하게 요약해서 계속 보고, 7장 공부를 병행하기를 추천한다

반응형
Comments