더 많이 실패하기

코딩공부 55일차: 자바의 정석 / 자바의 정석 75~80강 본문

자바/자바의정석

코딩공부 55일차: 자바의 정석 / 자바의 정석 75~80강

김발자~ 2022. 9. 23. 23:54
반응형

개발 공부 55일차

자바의 정석 기초편 강의

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 - 12~14 패키지, 클래스 패스

(3판 기준 336~339쪽)

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


 

패키지는 서로 관련된 클래스의 묶음
클래스는 클래스파일(.class), 패키지는 폴더, 하위 패키지는 하위 폴더
클래스의 실제 이름은 패키지를 포함(예: java.lang.String)
rt.jar은 클래스들을 압축한 파일(JDK설치경로\jre\lib) - java9부터 module 개념


패키지의 선언
패키지는 소스파일의 첫 번째 문장으로 딱 한 번 선언
같은 소스 파일의 클래스들은 모두 같은 패키지에 속한다
패키지 선언이 없으면 이름없는(unnamed / default) 패키지에 속한다


클래스 패스는 클래스 파일의 위치를 알려주는 경로
환경변수 classpath로 관리하며, 경로간의 구분자로 ;을 이용 (제어판에서 설정 가능)
claapath(환경변수)에 패키지의 루트를 등록해줘야 한다

 

 

 


ch 7 - 15, 16 import문, static import문

(3판 기준 340~343쪽)

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


 

import문
클래스를 사용할 때 패키지 이름을 생략할 수 있게 해준다
컴파일러에게 클래스가 속한 패키지를 알려준다
java.lang패키지의 클래스는 import하지 않아도 사용할 수 있다(String, Object, System, Thread 등)


import문의 선언
import 패키지명.클래스명;
혹은
import 패키지명.*;  //*은 모든 클래스
이클립스에서는 ctrl + shift + o를 누르면 된다

import문은 패키지문과 클래스선언 사이에 적는다
컴파일 시에 처리되므로 프로그램의 성능에 영향없다
이름이 같은 클래스가 속한 두 패키지를 import 할 때는 클래스 앞에 패키지명을 붙여줘야 한다
(예시: java.sql.Date / java.util.Date)


static import문
static 멤버(static 변수, static 메서드)를 사용할 때 클래스 이름을 생략할 수 있게 해준다

예시:
import static java.lang.Math.random;  //라고 static import문을 선언하면
Math.random(); → random();  //과 같이 클래스 이름 생략 가능

 

 

 


ch 7 - 17~20  제어자, static, final, abstract

(3판 기준 344~347쪽)


 

제어자
클래스와 클래스 멤버(멤버 변수, 메서드)에 부가적인 의미 부여 - 형용사와 같은 역할

 

접근제어자 그외
public static
final
protected abstract
native
(default) transient
synchronized
private volatile
strictfp

하나의 대상에 여러 제어자를 같이 사용가능(접근 제어자는 하나만)
순서는 상관없지만 보통 접근제어자를 가장 앞에 쓴다


static
클래스의, 공통적인
멤버변수(cv), 메서드(클래스 메서드/ iv, 인스턴스 메서드 사용 불가), 클래스 초기화 블럭에 붙일 수 있다


final
마지막의, 변경될 수 없는
클래스, 메서드, 멤버변수, 지역변수 모두 붙을 수 있다


abstract
클래스, 메서드에 붙을 수 있다
추상메서드를 가지고 있으면 무조건 추상 클래스가 된다 - 추상 클래스에선 객체를 생성할 수 없다
따라서 이때는 상속받아서 완전한 클래스를 만든 후 객체를 만들어야 한다

 

 

 


ch 7 - 21 접근제어자

(3판 기준 348쪽)


 

접근제어자

private 같은 클래스 내에서만 접근 가능
(default) 같은 패키지 내에서만 접근 가능
protected 같은 패키지 + 다른 패키지의 자손 클래스에서 접근 가능
public 접근 제한 없음

 

 

 


ch 7 - 22 캡슐화

(3판 기준 349~353쪽)


 

캡슐화
접근 제어자를 사용하는 이유
1. 외부로부터 데이터를 보호하기 위해서(캡슐화)
(예: 변수는 private으로, 메서드는 public으로 간접 접근만 허용)
2. 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서

내부에서만 사용되는 메서드라면 private으로 설정하여 나중에 수정할 때 그 클래스만 테스트할 수 있도록 한다
= 접근제어자 범위는 최대한 좁히는 것이 좋다

 

 

 


ch 7 - 23 다형성

(3판 기준 354~356쪽)


 

6장부터~7장 다형성까지 계속 반복해서 이해해야 다음 개념을 이해할 수 있다

 

★가장 중요한 
다형성
여러 가지 형태를 가질 수 있는 능력
조상 타입 참조 변수로 자손 타입 객체를 다루는 것

Tv t = new SmartTv();   // Tv: 조상, SmartTv: 자손 // 이처럼 타입 불일치해도 괜찮음
→자손의 멤버(객체)를 다 쓰지 못하고 조상의 멤버 개수(리모콘)만 사용할 수 있다
→즉, 참조변수로 사용할 수 있는 멤버의 개수가 달라지는 것

자손 타입의 참조변수로는 조상 타입의 객체를 가리킬 수 없다

 

 

 

 


지금까지도 설명 엄청 좋았지만 다형성 비유는 정말 이해하기 쉬웠다

반응형
Comments