MapleStory Finger Point

🟀 JAVA/πŸ“šλͺ…ν’ˆ JAVA_ESSENTIAL

(κ°œλ…) 클래슀/객체 - λͺ…ν’ˆ JAVA ESSENTIAL

HYEJU01 2024. 4. 9. 02:12

μΊ‘μŠν™”

객체λ₯Ό 캑슐둜 μ‹Έμ„œ λ‚΄λΆ€ 보호, μ™ΈλΆ€ μ ‘κ·ΌμœΌλ‘œλΆ€ν„° μ•ˆμ „

클래슀 → μΈμŠ€ν„΄μŠ€ 클래슀 (ν•„λ“œ, λ©”μ†Œλ“œ)

객체 = 클래슀의 μΈμŠ€ν„΄μŠ€

 

상속

μžμ‹ν΄λž˜μŠ€κ°€ λΆ€λͺ¨ν΄λž˜μŠ€λ₯Ό λ¬Όλ € λ°›μŒ λΆ€λͺ¨ν΄λž˜μŠ€μ˜ κΈ°λŠ₯을 ν™•μž₯ ν•˜λŠ” κ°œλ…

λΆ€λͺ¨ν΄λž˜μŠ€ = 슈퍼클래슀

μžμ‹ν΄λž˜μŠ€ = μ„œλΈŒν΄λž˜μŠ€

 

λ‹€ν˜•μ„±

λ©”μ†Œλ“œκ°€ 클래슀/객체에 따라 λ‹€λ₯΄κ²Œ κ΅¬ν˜„λ˜λŠ” 것

λ©”μ†Œλ“œ μ˜€λ²„λΌμ΄λ”© :

λ©”μ†Œλ“œ μ˜€λ²„λ‘œλ”© :

 

ν΄λž˜μŠ€μƒμ„±

μ ‘κ·Όμ§€μ •μž , 클래슀 μ„ μ–Έ, 클래슀 이름, 멀버 = 클래슀 κ΅¬μ„±μš”μ†Œ (ν•„λ“œ, λ©”μ†Œλ“œ)

 

객체생성

1. 객체에 λŒ€ν•œ 레퍼런슀 λ³€μˆ˜ μ„ μ–Έ 

Circle pizza;

 

2. 객체 생성  (new μ—°μ‚°μž)

pizza = new Circle();

 

- μ„ μ–Έ + 객체 λ™μ‹œμ— ν•˜κΈ°

Circle pizza = new Circle();

 

3. μ ‘κ·Ό (. 점 μ—°μ‚°μž )

pizza.name = "ν”Όμž";

 

μƒμ„±μž

객체가 생성될 λ–„ μ΄ˆκΈ°ν™”λ₯Ό μœ„ν•΄ μ‹€ν–‰λ˜λŠ” λ©”μ„œλ“œ

 

1. μƒμ„±μžλŠ” 클래슀 이름과 동일 (ν•„μˆ˜)

2. μƒμ„±μž μ—¬λŸ¬κ°œ μž‘μ„± κ°€λŠ₯

3. μƒμ„±μžλŠ” 객체λ₯Ό 생성할 λ•Œ ν•œλ²ˆλ§Œ 호좜 됨

4. μƒμ„±μžμ— λ¦¬ν„΄νƒ€μž… 지정 λΆˆκ°€λŠ₯ XX

5. μƒμ„±μžμ˜ λͺ©μ μ€ 객체 생성을 μœ„ν•œ μ΄ˆκΈ°μž‘μ—…μž„

 

κΈ°λ³Έμƒμ„±μž = λ””ν΄νŠΈ μƒμ„±μž

λ§€κ°œλ³€μˆ˜ X , λ‹¨μˆœ 리턴 μƒμ„±μž

 

- ν΄λž˜μŠ€μ— μƒμ„±μžκ°€ ν•˜λ‚˜λ„ μ—†μœΌλ©΄ (컴파일였λ₯˜)

μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ 생성 ν•΄μ€Œ

 

- μƒμ„±μžκ°€ ν•˜λ‚˜λΌλ„ μ‘΄μž¬ν•˜λ©΄ μžλ™ 생성 μ•ˆλ¨ 

 

this 레퍼런슀

객체 자기 μžμ‹ μ— λŒ€ν•œ 레퍼런슀, μ»΄νŒŒμΌλŸ¬μ— μ˜ν•΄ μžλ™ 관리

 

- λ‹€λ₯Έ μƒμ„±μž ν˜ΈμΆœκ°€λŠ₯ this()

1. μƒμ„±μžμ—μ„œλ§Œ μ‚¬μš©λ¨!

2. λ°˜λ“œμ‹œ 같은 클래슀의 λ‹€λ₯Έ μƒμ„±μž!!λ₯Ό ν˜ΈμΆœν•  λ•Œ μ‚¬μš©

3. λ°˜λ“œμ‹œ μƒμ„±μžμ˜ 첫문μž₯!!으둜 μ‚¬μš©λ˜μ–΄μ•Όν•¨

 

객체 λ°°μ—΄

객체 레퍼런슀λ₯Ό μ›μ†Œλ‘œ κ°–λŠ” λ°°μ—΄

 

1. 레퍼런슀 μ„ μ–Έ (크기 μ„€μ • X)

Circle [] c;

2. 레퍼런슀 λ°°μ—΄ 생성

c = new Circle[5];

3. 객체 생성

for (int = i ; i<c.length; i++)

c[i] = new Circle(i);

 

λ°°μ—΄ μ›μ†Œ 개체 μ ‘κ·Ό (인덱슀)

c[i] 

 

 

λ©”μ†Œλ“œ ν˜•μ‹

μ ‘κ·Όμ§€μ •μž , λ¦¬ν„΄νƒ€μž…

 

인자 전달 = 값에 μ˜ν•œ 호좜

1. κΈ°λ³Έ νƒ€μž… κ°’ 전달

κΈ°λ³Έ νƒ€μž… => 볡사 λ˜μ–΄ 전달

2. 객체 전달

클래슀 νƒ€μž… => 객체의 λ ˆνΌλŸ°μŠ€κ°’ 전달

3. λ°°μ—΄ 전달

λ°°μ—΄ => 배열에 λŒ€ν•œ 레퍼런슀 전달

 

λ©”μ†Œλ“œ μ˜€λ²„λ‘œλ”© = λ©”μ†Œλ“œ 쀑볡

이름 κ°™μ§€λ§Œ , λ§€κ°œλ³€μˆ˜ νƒ€μž…-κ°œμˆ˜κ°€ λ‹€λ₯Έ λ©”μ†Œλ“œλ“€

  1. 이름이 동일해야함
  2. λ§€κ°œλ³€μˆ˜ 개수-νƒ€μž…μ΄ μ„œλ‘œ 달라야함

객체 μΉ˜ν™˜

객체 볡사가 μ•„λ‹˜ X

ob1= ob2

ob1 의 κ°μ²΄λŠ” 아무도 가리킀지 μ•ŠμŒ μ ‘κ·Ό λΆˆκ°€ μƒνƒœ 가비지가 λ˜μ–΄ μžλ™μœΌλ‘œ 수거돼 μž¬μ‚¬μš©λ¨.

객체 μ†Œλ©Έ

객체 μ†Œλ©Έ μ‹œν‚€λŠ” μ—°μ‚°μžλŠ” μ—†λ‹€ / 개발자 λ§ˆμŒλŒ€λ‘œ 객체 μ†Œλ©Έ λΆˆκ°€λŠ₯

가비지

ν• λ‹Ή 받은 객체, λ°°μ—΄ λ©”λͺ¨λ¦¬ 쀑 더이상 μ‚¬μš©ν•˜μ§€ μ•Šκ²Œλœ λ©”λͺ¨λ¦¬

μ°Έμ‘°ν•˜λŠ” λ ˆνΌλŸ°μŠ€κ°€ ν•˜λ‚˜λ„ μ—†λŠ” 객체 / 배열을 κ°€λΉ„μ§€λ‘œ νŒλ‹¨ν•¨

가비지 μ»¬λ ‰μ…˜ (by 가비지 μ»¬λ ‰μ…˜ μŠ€λ ˆλ“œ)

가비지가 λ§Žμ•„μ§€λ©΄ κ°€μš© λ©”λͺ¨λ¦¬ 양이 쀄어듬, 일정 크기 μ΄ν•˜λ‘œ 쀄어듀면 JVM 이 가비지 νšŒμˆ˜ν•΄μ„œ κ°€μš©λ©”λͺ¨λ¦¬λ₯Ό 늘렀쀌

System.gc(); //가비지 μ»¬λ ‰μ…˜ μš”μ²­

μ ‘κ·Όμ§€μ •μž

  1. private
  2. protected
  3. public
  4. μƒλž΅ (λ””ν΄νŠΈ μ ‘κ·Ό 지정)

클래슀 μ ‘κ·Ό 지정

  1. public
  2. default

멀버 μ ‘κ·Ό 지정

private(클래슀 λ‚΄) < default (동일 νŒ¨ν‚€μ§€ λ‚΄)< protected < public

  • protected
  1. 같은 νŒ¨ν‚€μ§€ λ‚΄μ˜ λͺ¨λ“  클래슀
  2. λ‹€λ₯Έ νŒ¨ν‚€μ§€λΌλ„ μžμ‹ 클래슀의 경우 μ ‘κ·Ό ν—ˆμš©

static 멀버 = 클래슀 멀버

static μ§€μ‹œμ–΄λ‘œ μ„ μ–Έλœ 멀버

 

-독립적인 곡간 ν• λ‹Ή λ°›μŒ

-ν΄λž˜μŠ€λ‹Ή ν•˜λ‚˜λ§Œ 생성됨

-객체 곡간 ν• λ‹Ή μ „ 이미 외뢀에 λ³„λ„λ‘œ μ‘΄μž¬ν•¨ (ν”„λ‘œκ·Έλž¨ μ‹œμž‘ / 클래슀 λ‘œλ”© μ‹œ 생성)

-객체 μ†Œλ©Έν•΄λ„ 곡간 차지 → ν”„λ‘œκ·Έλž¨ μ’…λ£Œμ‹œ μ†Œλ©Έλ¨

 

-λ™μΌν•œ 클래슀 λͺ¨λ“  객체듀에 μ˜ν•΄ 곡유됨. (클래슀 이름 / 객체 μ΄λ¦„μœΌλ‘œ ν™œμš© κ°€λŠ₯)

static int m; ⇒ StaticSample.m = 3

 

1.μ „μ—­λ³€μˆ˜/ μ „μ—­ν•¨μˆ˜ λ§Œλ“€ λ•Œ ν™œμš©

2.κ³΅μœ λ©€λ²„ λ§Œλ“€ λ•Œ ν™œμš©

 

1.staticλ©€λ²„λ§Œ staticλ©”μ†Œλ“œμ— μ ‘κ·Ό κ°€λŠ₯

2.static멀버λ₯Ό μΈμŠ€ν„΄μŠ€ λ©€λ²„λŠ” μ‚¬μš©ν•  수 μžˆλ‹€.

3.staticλ©”μ†Œλ“œμ—λŠ” this λ₯Ό μ‚¬μš© λΆˆκ°€

final ν‚€μ›Œλ“œ

  1. final 클래슀 : 상속 X
  2. final λ©”μ†Œλ“œ : μ˜€λ²„λΌμ΄λ”© X
  3. final ν•„λ“œ : μƒμˆ˜ν™”