훌륭한 개발자 동료로 성장하길 꿈꾸며

유데미 STARTERS 취업 부트캠프 3기(백엔드과정) 4주차 학습 일지 본문

Education/udemy x 웅진 STARTERS 3th

유데미 STARTERS 취업 부트캠프 3기(백엔드과정) 4주차 학습 일지

CHOIALTH 2022. 12. 18. 23:58

 14일차(22-12-12 월) - JAVA(4) 

#지난시간복습

6장 객체지향
**public static void main(String args[]) (= 네임 메서드의 기본형식)**

- 메서드 overloading
1개클래스에 같은 이름의 메서드 여러개 정의 구문

-매개변수 개수나 타입이나 순서 중 1개 이상 다르게 정의해야함.

#Chap 6. 객체지향언어1(3)

Employee(클래스명) e1(객체주소참조변수명)             = new  (객체생성연산자) Employee()(생성자호출);

stack 영역에 e1 변수 할당 (null)
new 실행 - 메모리의 heap 영역에 Employee의 복사본을 만듦(변수+메서드 복사 할당). - 1000번지
Employee() 정의 내용 실행
= 대입연산자 실행 e1 =1000

1.this : 현재자신객체를 의미하는 자바키워드

매개변수 /지역변수 이름이 객체변수 이름과 같을 경우 정확히 의미를 구분하기위해 사용.
this.객체변수
쓰는 이유 ⇒  정확한 의미 구분 하자
현재 객체에 다른 생성자 호출 (생성자 overloading이 됐을 때.. 생성자 내부의 첫문장으로만 씀)
this([매개변수])
쓰는 이유 ⇒ 반복 정의 피하고, 재사용성 높이기 위함

2.super : 상위클래스객체를 의미하는 자바 키워드

상속 부모, 자식클래스 같은 이름의 변수가 존재할때
자식클래스 변수 우선 사용
부모클래스 상속 변수 - super.상속변수명
단, private 변수 super 붙일 수 없다.
super.상속메서드명 - 오버라이딩 하위 메서드 말고 상위 메서드 호출
super() -  부모 생성자 호출. 첫문장에 자동 포함됨
super(매개변수) - 부모 매개변수 정의 생성자 호출. 첫 문장에 명시 문장 작성해야.
this() - 자신과 같은 클래스의 다른 생성자 호출. 생성자 첫문장
super(), this() 1개 생성자 내부 동시 선언 불가


#chap 7.객체지향언어2(1)

1. 객체지향 언어의 조건

  • 캡슐화(연관 데이터 + 기능단위 = 클래스) +정보은닉
  • 상속
  • 다형성

 

2. overloading vs overriding

메서드 오버로딩(overloading ) 메서드 오버라이딩(overriding)
1개 클래스 내 같은 이름의 메서드 정의
매개변수 다르게 정의
리턴타입 무관하다
modifier 무관하다
상,하위 클래스 내 같은 이름의 메서드 정의 상속받은 메서드의 내용을 변경하는 것.
매개변수 동일하고 리턴타입 동일해야.
modifier 같거나 더 넓어야 한다.
유사 기능 매개변수 유형에 따라 여러개 사용 상위 메서드를 하위클래스에 맞게 수정하여 사용.
단, 선언문일치 필수!



3. 접근 : 클래스 변수 메서드 생성자 다른 클래스 호출 사용 권한 제어

  • public : 모든 클래스 접근 제한 전혀 X(무제한)
  • protected : 현재 패키지 + 다른 패키지 하위(자손)클래스에서 접근(사용) 가능
  • no modifier(default상태, package상태라 부름) : 현재 패키지 내부 다른 클래스에서 접근(사용) 가능
  • priviate : 현재 클래스 내부에서만 접근(사용) 가능

 

 15일차(22-12-13 화) - JAVA(5) 

#지난시간복습

상속 - 기존에 클래스 정의 후에 새로운 클래스 정의 시에 기존 클래스 정의 변수+메서드 필요

#chap 7. 객체지향언어2(2)

1. static (뜻 : 클래스의, 공통적인)

-자바실행과정
1) code 검증
2) static 변수나 메서드 할당
3) main 실행  - 객체 생성 - non-static 변수나 메서드 할당

 

static 변 1개 공유 - 클래스 영역 - 객체 생성 이전 할당1개 공유 - 클래스 영역 - 객체 생성 이전 할당
static 메서드 객체 생성 이전 할당
static 변수만 사용 메서드 - 객체 생성 이전 호출 간으
non-static 메서드 static 변수 + non-static 변수 모두 사용 메서드.

2. final (뜻 : 마지막의, 변경될 수 없는, 최종의)

final 변수 변수값 수정 불가능 = 상수
final 메서드 메서드 구현부 수정 불가능 = 메서드 overriding 불가능
final 클래스 클래스 수정 불가능.
상속 후에 자식 클래스에서 모든 메서드 overriding 불가능.
상속 불가능.
모든 메서드에 final 선언은 동일 의미.
객체 생성으로만 사용.
subclassing 불가능.

ex) 프로젝트 5명이 진행할때 약속된 공통의 라이브러리가 있다면 이에 final 붙이고 누구도 수정하지 않고 그대로의 라이브러리 사용한다.

ex) 절대불변의 진리값 표현 - 3.14

 

3. abstract(뜻 : 추상의, 미완성의)
추후 내용 추가 예정

✅객체지향언어의 조건
- 캡슐화 / 정보은닉
- 상속
- 다형성

4.  다형성(polymorphism)

✅ 기본형변수 형변환 규칙

  • boolean 제외
  • (데이터형)변수 —> 형변환연산자 자동형변환 규칙
  • byte → short → int → long → float → double
  •              char → int → long → float → double
  • 명시적(강제)형변환(?맞는지 확인필요)

✅ 참조형변수 형변환 규칙

  1. 상속관계
  2. 자동형변환 규칙 부모클래스 변수명1 = 자식클래스객체
  3. 자동형변환 이후 변수명1.변수 → 부모클래스 변수명1.메서드()→부모클래스 변수명1.overriding메서드()→자식클래스 ⇒ 부모 메서드를 자식 수정 재정의 - 자식 클래스 “우선”
  4. 명시적(강제)형변환자식클래스 변수명2 = (자식클래스명)변수명1변수명2.메서드()→ 부모클래스 + 자식클래스
  5. 변수명2.변수 → 부모클래스 + 자식클래스
  6. 부모클래스 변수명1 = 자식클래스객체
  7. 자동형변환 이후 부모클래스 변환 오버라이딩 메서드 자식클래스 우선

 16일차(22-12-14 수) - JAVA(6) 

#지난시간 복습

  class 변수 메서드 생성자 비고
public O O O O 모든 클래스에서 사용 가능
protected         현재 패키지 다른 클래스에서 사용 가능
no modifier = default 상태 = package 상태 O O O O 현재패키지 다른클래스에서 사용 가능
private X O O O 현재 클래스에서 사용 가능

#Chap 7. 객체지향언어2(3)
1. 인터페이스(interface)

  • 자바 클래스 다중상속 불가능
  •  
  •  
  • 추상 메서드만 포함 인터페이스 public abstract 자동 정의 메서드
  • 인터페이스로부터 클래스 다중 상속
  • 자식클래스 반드시 overriding 필수
  • 인터페이스 객체 생성 불간으
  • 생성자 필요X(클래스 기본생성자 "자동정의")
  • [static(객체생성전) final public 자동으로 정의된] 변수

2.abstract 클래스 vs 인터페이스

종류 abstract 클래스 인터페이스
특징 추상메서드와 구체적 정의 메서드
혼합
부분추상
1개 상속 단일상속
모든메서드 추상 메서드
완벽추상
다중상속
abstact class A{ abstract void m1(); void m2(){} } interface I{ void m1(); void m2(); }
class B implements I class C extends D implements I 1. 서로 다른 클래스에 공통 메서드 스펙 abstract class + interface
2. 서로 다른 클래스 중 일부 클래스 부모 클래스 정해진 상태라면 interface

 

 17일차(22-12-15 목) - JAVA(7) 

#chap 8. 예외처리

오류 - “오동작” - 중단 - “경고”x 컴파일오류

  • 소스 찾아서 수정 실행오류
  • 실행은 되지만 코드 작성자 의도와 다르게 동작하는 경우를 포함.
  • 프로그래밍적 해결 가능한 실행오류 → java에서 말하는 예외 ⇒ xxxException
  • 프로그래밍적 해결 불가능한 실행오류 ex) 메모리 부족, 전원 차단 등..

직접처리 - try → catch → finally

간접처리 예외발생 메서드 외부 다른 메서드 처리 - throws

 

throws - 메서드 선언부 선언. throws 예외클래스명,,,, 예외 다른곳으로 전달

throw(s뗌) - 메서드 구현 문장 . 의도적으로 예외 발생시키겠다. ex) 10 / 0

try-catch-finally

throws

throw

class xxx extends Exception

//이상 8장 마무리

 

#chap 9. java.lang패키지&유용한클래스(1)

// 1-8장 - 자바 기본 + 객체지향 구문

//9장 라이브러리 등장

  1. 기능 라이브러리에서 제공하는지 체크 → 제공하면 사용 abstract class 형태로 제공 - 상속 활용 final class 형태로 제공 - 객체생성 활용
  2. 제공하지 X? → 직접 구현해야.

java.lang 패키지

  1. 자바언어 기본 기능( 자주사용하는) 클래스 모음
  2. import 안해도 됨
  • object
  1. 자바 모든 클래스 “자동” 상속
  2. 자바 클래스 최상위클래스
  3. Object non-private 변수와 메서드들은 다른 자바클래스 “자동” 포함
  4. overriding 사용

5) toString()

  • 객체를 문자열화. 객체 정보 문자열 표현
  • 객체 출력 문장에서 자동 호출
  • String toString()
  • 패키지명.클래스명@16진수주소값
  • overriding 다른 내용 출력

6) equals()

  • 두 객체의 주소를 비교(overriding 다른 부분 비교 가능)
  • boolean. true / false
  • equals(Object o) : 객체와 비교할 매개변수 1개를 받는다.
  1. hashCode()
  • 객체 해쉬값 리턴해주는 메서드
  • 객체 주소 int 변환 리턴 = 객체 서로 다른값 / 객체 지문 / 객체 고유한 값





 18일차(22-12-16 금) - JAVA(8) 

#chap10. 날짜와 시간 & 형식화

추후 내용 추가 예정

#chap11. 컬렉션 프레임웍(collections framework)

*정의 : 데이터 군(群)을 저장하는 클래스들을 표준화한 설계.
컬렉션(여러데이터 모음) + 프레임웍(표준화된 프로그래밍방식)

 

List 계열의 클래스들 Set 계열의 클래스들 Map 계열의 클래스들
List 인터페이스 자식클래스들 Set 인터페이스 자식클래스들 Map 인터페이스 자식클래스들
LinkedList
ArrayList
xxxxList
HashSet
TechSet
HashMap
Hashtable
Properties
1. 순서 있다 - index
2. 동일 객체 중복 저장 가능 index, value
1. 순서 없다
2. 동일 객체 중복 저장 불가능 value
1. {key, value}
2. key 식별자 중복 허용X
3. value 동일 객체 중복 저장 가능

ArrayList

Array list = new ArrayList();

Array list = new ArrayList(5);

Array list = new ArrayList(5, 2);

  • 데이터타입 한정 X
  • 개수동적
  • 참조형변수 데이터만 저장(아래의 방법으로기본형 변수도 저장 가능)Integer in = i; //기본형 변수를 참조형 변수로 변환
  • int i = 10;
  • 메서드
  • 저장메서드 : add(”java”) add(1) add(3.14) add(new A()) add(Object o )
  • 수정메서드 : set(1, ‘a’);
  • 삭제메서드 : remove(1);
  • 저장메서드 : get(0); (”java” 리턴) — 특정 인덱스 저장된 객체 조회 Object ← get(0) 특정 인덱스에 저장된 객체 조회 int ← = size() 저장된 데이터의 개수 int ← indexOf(”jsp”) : 0, 1, 2, …-1

 4주차 짧게 돌아보기 

  1. 객체지향이 지나가니 숨이 조금 트인다. 그래서 더더욱 객체지향 파트 복습이 필요하다
  2. 유데미 자바 강의를 좀 더 자주 듣도록 짬을내자
  3. 벌써 1달이 가까이 지났다구요.....?😇
  4. 사진 1장이상은 꼭남기며 수업 듣자 ㅎㅎ..

* 유데미 바로가기 : https://bit.ly/3V220ri
* STARTERS 취업 부트캠프 공식 블로그 보러가기 : https://blog.naver.com/udemy-wjtb
본 후기는 유데미-웅진씽크빅 취업 부트캠프 3기 백엔드 과정 학습 일지 리뷰로 작성되었습니다.