[JAVA] 객체지ν–₯

Updated:

Categories:

Tags: ,

πŸ“Œ 개인적인 κ³΅κ°„μœΌλ‘œ 곡뢀λ₯Ό κΈ°λ‘ν•˜κ³  λ³΅μŠ΅ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
μ •ν™•ν•˜μ§€ μ•Šμ€ 정보가 μžˆμ„ 수 μžˆμœΌλ‹ˆ μ°Έκ³ λ°”λžλ‹ˆλ‹€ :😸
[ν‹€λ¦° λ‚΄μš©μ€ λŒ“κΈ€λ‘œ λ‚¨κ²¨μ£Όμ‹œλ©΄ λ³΅λ°›μœΌμ‹€κ±°μ—μš”]

μžλ°”λŠ” 객체지ν–₯μ–Έμ–΄

객체지ν–₯이 ν•„μš”ν•œ μ΄μœ λŠ” 객체λ₯Ό 좔상화 ν•΄μ„œ λ§Œλ“œλŠ” μž‘μ—…μ„ ν•΄μ•Όν•˜λŠ”λ°
여기에 λŒ€ν•œ λ°˜λ³΅μž‘μ—…μ„ 계속 ν•˜λ©΄ μ€‘λ³΅μž‘μ—…μ΄ μƒκΈ°λ―€λ‘œ
이λ₯Ό μž¬ν™œμš©ν•˜κ³  적은 λ…Έλ ₯으둜 μ‰½κ²Œ μ½”λ“œλ₯Ό λ³€κ²½ν•˜κΈ° μœ„ν•¨
즉, 생산성 ν–₯μƒμœΌλ‘œ μ΄μ–΄μ§€κ²Œ 됨
μ–΄λ €μš΄ 말둜 ν”„λ‘œκ·Έλž˜λ° μ„€κ³„μ˜ μΈ‘λ©΄μ—μ„œ 보면
1) ν”„λ‘œκ·Έλž¨ 개발 및 μœ μ§€ λ³΄μˆ˜μ— λ“œλŠ” λΉ„μš©κ³Ό μ‹œκ°„μ„ 쀄이기 μœ„ν•¨.
2) 객체λ₯Ό 톡해 데이터λ₯Ό κ΄€λ¦¬ν•˜μ—¬ 데이터λ₯Ό 손싀없이 κ΄€λ¦¬ν•˜κΈ° 용이

μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±/μ½”λ“œκ΄€λ¦¬μš©μ΄=μœ μ§€λ³΄μˆ˜/μ‹ λ’°μ„± 높은 ν”„λ‘œκ·Έλž˜λ° κ°€λŠ₯

ν΄λž˜μŠ€μ™€ 객체

  1. 클래슀 - 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ 섀계도라고 μƒκ°ν•˜κΈ°
    1. 클래슀 μ •μ˜ : 객체λ₯Ό μ •μ˜ν•΄ 놓은 것
    2. 클래슀의 μš©λ„ : 객체λ₯Ό μƒμ„±ν•˜λŠ”λ° μ‚¬μš©
  2. 객체 - 클래슀(TV섀계도)에 μ˜ν•΄ λ§Œλ“€μ–΄μ§„ μ œν’ˆ(TV)
    1. 객체의 μ •μ˜ : μ‹€μ œλ‘œ μ‘΄μž¬ν•˜λŠ” 것 , 사물 λ˜λŠ” κ°œλ…
    2. 객체의 μš©λ„ : 객체가 κ°€μ§€κ³  μžˆλŠ” κΈ°λŠ₯κ³Ό 속성에 따라 닀름
    3. μœ ν˜•μ˜ 객체 : 책상,의자, μžλ™μ°¨, TV와 같은 사물
    4. λ¬΄ν˜•μ˜ 객체 : μˆ˜ν•™κ³΅μ‹, ν”„λ‘œκ·Έλž¨ μ—λŸ¬μ™€ 같은 λ…Όλ¦¬λ‚˜ κ°œλ…

ν”„λ‘œκ·Έλž˜λ° κ΄€μ μ—μ„œ ν΄λž˜μŠ€λŠ” 두가지 μ •μ˜λ₯Ό 내릴 수 있음.

  1. 클래슀 - 데이터와 ν•¨μˆ˜μ˜ κ²°ν•©
    • λ³€μˆ˜>λ°°μ—΄>ꡬ쑰체>클래슀 ν˜•νƒœλ‘œ λ°œμ „
    • λ³€μˆ˜ = ν•˜λ‚˜μ˜ 데이터λ₯Ό μ €μž₯ν•  수 μžˆλŠ” 곡간.
    • λ°°μ—΄ = 같은 μ’…λ₯˜μ˜ μ—¬λŸ¬ 데이터λ₯Ό ν•˜λ‚˜μ˜ μ§‘ν•©μœΌλ‘œ μ €μž₯ν•  수 μžˆλŠ” 곡간
    • ꡬ쑰체 = μ„œλ‘œ κ΄€λ ¨λœ μ—¬λŸ¬ 데이터λ₯Ό μ’…λ₯˜μ— 관계없이 ν•˜λ‚˜μ˜ μ§‘ν•©μœΌλ‘œ μ €μž₯ν•  수 μžˆλŠ” 곡간.
    • 클래슀 = 데이터와 ν•¨μˆ˜μ˜ κ²°ν•©. (ꡬ쑰체+ν•¨μˆ˜)
  2. 클래슀 - μ‚¬μš©μž μ •μ˜ νƒ€μž….

    ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ μ œκ³΅ν•˜λŠ” μžλ£Œν˜• 외에 ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ„œλ‘œ κ΄€λ ¨λœ λ³€μˆ˜λ₯Ό λ¬Άμ–΄μ„œ ν•˜λ‚˜μ˜ νƒ€μž…μœΌλ‘œ μƒˆλ‘œ μΆ”κ°€ν•˜λŠ” 것을 μ‚¬μš©μž μ •μ˜ νƒ€μž…μ΄λΌκ³  함.

객체와 μΈμŠ€ν„΄μŠ€

  1. 클래슀의 μΈμŠ€ν„΄μŠ€ν™” : ν΄λž˜μŠ€λ‘œλΆ€ν„° 객체λ₯Ό λ§Œλ“œλŠ” κ³Όμ •
  2. μΈμŠ€ν„΄μŠ€: μ–΄λ–€ ν΄λž˜μŠ€λ‘œλΆ€ν„° λ§Œλ“€μ–΄μ§„ 객체

객체의 κ΅¬μ„±μš”μ†Œ

κ°μ²΄λŠ” 속성과 κΈ°λŠ₯, 두 μ’…λ₯˜μ˜ κ΅¬μ„±μš”μ†Œλ‘œ 이루어짐 = κ°μ²΄λŠ” 속성과 κΈ°λŠ₯의 μ§‘ν•©.

ν΄λž˜μŠ€λ‘œλΆ€ν„° 객체λ₯Ό μƒμ„±ν•˜λ©΄, ν΄λž˜μŠ€μ— μ •μ˜λœ 속성과 κΈ°λŠ₯을 κ°€μ§„ 객체가 λ§Œλ“€μ–΄ μ§€λŠ” 것.

  • 속성(Property) : λ©€λ²„λ³€μˆ˜, νŠΉμ„±,ν•„λ“œ,μƒνƒœ
  • κΈ°λŠ₯(function) : λ©”μ„œλ“œ, ν•¨μˆ˜, ν–‰μœ„

μΈμŠ€ν„΄μŠ€μ˜ 생성과 μ‚¬μš©

1
2
3
4
5
6
7
8
9
클래슀λͺ… λ³€μˆ˜λͺ…; //μΈμŠ€ν„΄μŠ€λ₯Ό μ°Έμ‘°ν•˜κΈ° ν•œ μ°Έμ‘°λ³€μˆ˜ μ„ μ–Έ
Tv t;

μ°Έμ‘°_λ³€μˆ˜λͺ… = new  μƒμ„±μž() //μΈμŠ€ν„΄μŠ€ 생성 ν›„ 객체 μ£Όμ†Œλ₯Ό μ°Έμ‘°λ³€μˆ˜μ— μ €μž₯
t = new Tv();

ν•˜λ‚˜λ‘œ μ€„μ—¬μ„œ μ•„λž˜μ™€ 같이 μ‚¬μš© κ°€λŠ₯

Tv t = new Tv(); 

객체 μƒμ„±μ‹œ 항상 new κ°€ 듀어감

  • μΈμŠ€ν„΄μŠ€λŠ” μ°Έμ‘°λ³€μˆ˜λ₯Ό ν†΅ν•΄μ„œλ§Œ λ‹€λ£° 수 있으며, μ°Έμ‘°λ³€μˆ˜μ˜ νƒ€μž…μ€ μΈμŠ€ν„΄μŠ€μ˜ νƒ€μž…κ³Ό μΌμΉ˜ν•΄μ•Όν•¨.

λ³€μˆ˜

λ³€μˆ˜μ˜ μ„ μ–Έ μœ„μΉ˜κ°€ λ³€μˆ˜μ˜ μ’…λ₯˜μ™€ λ²”μœ„λ₯Ό κ²°μ •.

  1. 클래슀 λ³€μˆ˜
    1. 같은 클래슀의 λͺ¨λ“  μΈμŠ€ν„΄μŠ€λ“€μ΄ κ³΅μœ ν•˜λŠ” λ³€μˆ˜
    2. μΈμŠ€ν„΄μŠ€ 생성 없이 β€˜ν΄λž˜μŠ€μ΄λ¦„.ν΄λž˜μŠ€λ³€μˆ˜λͺ…’ 으둜 μ ‘κ·Ό
    3. ν΄λž˜μŠ€κ°€ λ‘œλ”©λ  λ•Œ μƒμ„±λ˜κ³  ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ  λ•Œ μ†Œλ©Έ
    4. static λ³€μˆ˜λŠ” ν•„μš”ν•œ κ²½μš°μ—λ§Œ μ œν•œμ μœΌλ‘œ μ‚¬μš© =static λ³€μˆ˜λŠ” ν”„λ‘œκ·Έλž¨μ˜ 생λͺ…μ£ΌκΈ° λ™μ•ˆ λ©”λͺ¨λ¦¬μ— μƒμ£Όν•˜λ―€λ‘œ, λΆˆν•„μš”ν•œ λ©”λͺ¨λ¦¬ μ‚¬μš©μ„ μ΄ˆλž˜ν•  수 있기 λ•Œλ¬Έ
  2. μΈμŠ€ν„΄μŠ€ λ³€μˆ˜
    1. 각 μΈμŠ€ν„΄μŠ€μ˜ κ°œλ³„μ μΈ μ €μž₯곡간. μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ λ‹€λ₯Έ κ°’ μ €μž₯ κ°€λŠ₯
    2. μΈμŠ€ν„΄μŠ€ 생성후, β€˜μ°Έμ‘°λ³€μˆ˜.μΈμŠ€ν„΄μŠ€λ³€μˆ˜λͺ…β€™μœΌλ‘œ μ ‘κ·Ό
    3. μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ μƒμ„±λ˜κ³  μ°Έμ‘°λ³€μˆ˜κ°€ 없을 λ•ŒλŠ” 가비지컬렉터에 μ˜ν•΄ μžλ™ 제거됨.
  3. μ§€μ—­λ³€μˆ˜
    1. λ©”μ†Œλ“œ 내에 선언됨. λ©”μ„œλ“œ μ’…λ£Œμ™€ ν•¨κ»˜ μ†Œλ©Έ
    2. 쑰건문, 반볡문의 λΈ”λŸ­{} 내에 μ„ μ–Έλœ μ§€μ—­λ³€μˆ˜λŠ” λΈ”λŸ­μ„ λ²—μ–΄λ‚˜λ©΄ μ†Œλ©Έ
  4. μΈμŠ€ν„΄μŠ€λ³€μˆ˜λŠ” μΈμŠ€ν„΄μŠ€κ°€ 생성될 λ•Œλ§ˆλ‹€ μƒμ„±λ˜λ―€λ‘œ μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ 각기 λ‹€λ₯Έ 값을 μœ μ§€ν•  수 μžˆμ§€λ§Œ, ν΄λž˜μŠ€λ³€μˆ˜λŠ” λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ ν•˜λ‚˜μ˜ μ €μž₯곡간을 κ³΅μœ ν•˜λ―€λ‘œ 항상 κ³΅ν†΅λœ 값을 κ°–λŠ”λ‹€.
    1. μΉ΄λ“œμ˜ λ¬΄λŠ¬λ‚˜ μˆ«μžλŠ” μΈμŠ€ν„΄μŠ€λ³€μˆ˜
    2. 같은 μΉ΄λ“œμ˜ 폭과 λ†’μ΄λŠ” λͺ¨λ‘ 동일 - 클래슀 λ³€μˆ˜

λ©”μ„œλ“œ

  1. μ •μ˜ : νŠΉμ •μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 일련의 λ¬Έμž₯을 ν•˜λ‚˜λ‘œ 묢은 것.
  2. μ‚¬μš©μ΄μœ 

    (1) 높은 μž¬μ‚¬μš©μ„± -μ—¬λŸ¬ 번 호좜 κ°€λŠ₯, λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨μ—μ„œλ„ μ‚¬μš© κ°€λŠ₯

    (2) 쀑볡 μ½”λ“œ 제거 - λ°˜λ³΅λ˜λŠ” λ¬Έμž₯을 λ¬Άμ–΄μ„œ ν•˜λ‚˜μ˜ λ©”μ„œλ“œλ‘œ λ§Œλ“€λ©΄ λŒ€μ²΄ κ°€λŠ₯

    (3) ν”„λ‘œκ·Έλž¨μ˜ ꡬ쑰화

  3. λ©”μ„œλ“œμ˜ μ„ μ–Έκ³Ό κ΅¬ν˜„

    (1) λ©”μ„œλ“œλŠ” μ„ μ–ΈλΆ€ / κ΅¬ν˜„λΆ€λ‘œ λ‚˜λ‰˜μ–΄μ Έ μžˆλ‹€.

    (2) μ„ μ–ΈλΆ€

    1. λ©”μ„œλ“œμ˜ 이름과 λ§€κ°œλ³€μˆ˜μ˜ μ„ μ–Έ 그리고 λ°˜ν™˜ νƒ€μž…μœΌλ‘œ ꡬ성
    2. ex) int add(int x,inty){ }
    3. λ©”μ„œλ“œμ˜ 이름 : λ³€μˆ˜μ˜ λͺ…λͺ… κ·œμΉ™λŒ€λ‘œ μž‘μ„±
    4. λ°˜ν™˜ νƒ€μž…μ„ 적어야 ν•˜κ³  λ°˜ν™˜ 값이 μ—†λŠ” 경우 void μž‘μ„±
    5. λ©”μ„œλ“œ 내에 μ„ μ–Έλœ λ³€μˆ˜λ“€μ€ μ§€μ—­λ³€μˆ˜λΌ 함.

    (3) κ΅¬ν˜„λΆ€

    1. λ©”μ„œλ“œμ˜ μ„ μ–ΈλΆ€ λ‹€μŒμ— μ˜€λŠ” μ€‘κ΄„ν˜Έ 뢀뢄을 κ΅¬ν˜„λΆ€λΌ 함.
    2. λ©”μ„œλ“œκ°€ 정상 μ’…λ£Œλ˜λŠ” 경우 λ©”μ„œλ“œμ˜ λΈ”λŸ­μ˜ 끝에 λ„λ‹¬ν–ˆμ„ λ•Œ/λ©”μ„œλ“œ λΈ”λŸ­μ„ μˆ˜ν–‰μ€‘ return문을 λ§Œλ‚¬μ„λ•Œ
    3. return λ¬Έ : ν˜„μž¬ 싀행쀑인 λ©”μ„œλ“œλ₯Ό μ’…λ£Œν•˜κ³  ν˜ΈμΆœν•œ λ©”μ„œλ“œλ‘œ λŒμ•„κ°„λ‹€.
    4. λ°˜ν™˜ 값이 없을 경우 return문만 μ“°κ³ (return;) λ°˜ν™˜κ°’μ΄ μžˆμ„ 경우 return 뒀에 λ°˜ν™˜κ°’μ„ μ§€μ •ν•΄ μ£Όμ–΄μ•Ό ν•œλ‹€.(return λ°˜ν™˜κ°’;)
    5. λ°˜ν™˜νƒ€μž…μ΄ voidκ°€ μ•„λ‹Œ 경우 κ΅¬ν˜„λΆ€ μ•ˆμ— return λ°˜ν™˜κ°’ 이 λ°˜λ“œμ‹œ ν¬ν•¨λ˜μ–΄μ•Όν•¨.
    6. return문은 ν•˜λ‚˜μ˜ κ°’λ§Œ λ°˜ν™˜ ν•  수 있고 λ©”μ„œλ“œμ˜ λ°˜ν™˜ νƒ€μž…κ³Ό νƒ€μž…μ΄ μΌμΉ˜ν•΄μ•Ό 함.
  4. λ©”μ„œλ“œμ˜ 호좜

    (1) λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λ©΄ κ΅¬ν˜„λΆ€{}의 λ¬Έμž₯듀이 μˆ˜ν–‰λ¨.

    1. μ°Έμ‘°λ³€μˆ˜.λ©”μ„œλ“œμ΄λ¦„(κ°’1,κ°’2,…); //λ©”μ„œλ“œ 호좜 방법.
    2. μ°Έμ‘°λ³€μˆ˜.λ©”μ„œλ“œμ΄λ¦„(); //λ©”μ„œλ“œμ— μ„ μ–Έλœ λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” 경우

    [사진 좜처 - μžλ°”μ˜ 정석]

    (2) μΈμžμ™€ λ§€κ°œλ³€μˆ˜

    1. 인자 : λ©”μ„œλ“œ ν˜ΈμΆœμ‹œ ( ) κ΄„ν˜Έ μ•ˆμ— μ§€μ •ν•΄μ€€ κ°’
    2. 인자의 κ°œμˆ˜μ™€ μˆœμ„œλŠ” 호좜된 λ©”μ„œλ“œμ— μ„ μ–Έλœ λ§€κ°œλ³€μˆ˜μ™€ μΌμΉ˜ν•΄μ•Ό 함.

    (3) λ©”μ„œλ“œμ˜ 싀행흐름

  5. Return문

    1) ν˜„μž¬ μ‹€ν–‰ 쀑인 λ©”μ„œλ“œλ₯Ό μ’…λ£Œν•˜κ³  호좜된 λ©”μ„œλ“œλ‘œ λŒμ•„κ°ˆ λ•Œ.

    2) λ°˜ν™˜κ°’μ˜ μœ λ¬΄μ— 관계없이 λͺ¨λ“  λ©”μ„œλ“œμ—λŠ” 적어도 ν•˜λ‚˜μ˜ return문이 μžˆμ–΄μ•Όν•¨.

    3) return 문을 적지 μ•Šμ•„λ„ μ»΄νŒŒμΌλŸ¬κ°€ λ§ˆμ§€λ§‰μ— μžλ™μœΌλ‘œ 좔가함.

    4) return문의 κ°œμˆ˜λŠ” μ΅œμ†Œν™” ν•˜λŠ” 것이 μ’‹λ‹€.

JVM λ©”λͺ¨λ¦¬κ΅¬μ‘°

  1. λ©”μ„œλ“œ μ˜μ—­ : 클래슀 정보와 ν΄λž˜μŠ€λ³€μˆ˜κ°€ μ €μž₯λ˜λŠ” κ³³
  2. ν˜ΈμΆœμŠ€νƒ : λ©”μ„œλ“œμ˜ μž‘μ—…κ³΅κ°„, λ©”μ„œλ“œκ°€ 호좜되면 λ©”μ„œλ“œ μˆ˜ν–‰μ— ν•„μš”ν•œ λ©”λͺ¨λ¦¬ 곡간을 ν• λ‹Ήλ°›κ³  λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜λ©΄ μ‚¬μš©ν•˜λ˜ λ©”λͺ¨λ¦¬λ₯Ό λ°˜ν™˜ν•œλ‹€.
    • ν˜ΈμΆœμŠ€νƒμ˜ νŠΉμ§• 1) λ©”μ„œλ“œκ°€ 호좜되면 μˆ˜ν–‰μ— ν•„μš”ν•œ λ©”λͺ¨λ¦¬λ₯Ό μŠ€νƒμ— ν• λ‹Ή λ°›λŠ”λ‹€. 2) λ©”μ„œλ“œκ°€ μˆ˜ν–‰μ„ 마치면 μ‚¬μš©ν–ˆλ˜ λ©”λͺ¨λ¦¬λ₯Ό λ°˜ν™˜ 3) ν˜ΈμΆœμŠ€νƒμ˜ 제일 μœ„μ— μžˆλŠ” λ©”μ„œλ“œκ°€ ν˜„μž¬ 싀행쀑인 λ©”μ„œλ“œ 4) μ•„λž˜μ— μžˆλŠ” λ©”μ„œλ“œκ°€ λ°”λ‘œ μœ„μ˜ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•œ λ©”μ„œλ“œ
  3. νž™ : μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ˜λŠ” 곡간, new μ—°μ‚°μžμ— μ˜ν•΄μ„œ μƒμ„±λ˜λŠ” λ°°μ—΄κ³Ό κ°μ²΄λŠ”

μ—¬κΈ°μ„œ 생성됨.

  1. λ©”μ„œλ“œμ˜ μ‹œμž‘κ³Ό μ’…λ£Œμ˜ μˆœμ„œλ₯Ό ν™•μΈν•˜λŠ” 예제

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
     class CallStackTest{
     public static void main (String[]args){
      System.out.println("main(String[]args)이 μ‹œμž‘λ˜μ—ˆμŒ.");
      firstMethod();
      System.out.println("main(String[]args)이 λλ‚¬μŒ.");
      }
         
      static void firstMethod(){
      System.out.println("firstMethod()이 μ‹œμž‘λ˜μ—ˆμŒ.");
      secondMethod();
      System.out.println("firstMethod()이 λλ‚¬μŒ.");
      }
         
      static void secondMethod(){
      System.out.println("secondMethod()이 μ‹œμž‘λ˜μ—ˆμŒ.");
      System.out.println("secondMethod()이 λλ‚¬μŒ.");
         
      --------------------------
      κ²°κ³Ό
      "main(String[]args)이 μ‹œμž‘λ˜μ—ˆμŒ."
      "firstMethod()이 μ‹œμž‘λ˜μ—ˆμŒ."
      "secondMethod()이 μ‹œμž‘λ˜μ—ˆμŒ."
      "secondMethod()이 λλ‚¬μŒ."
      "firstMethod()이 λλ‚¬μŒ."
      "main(String[]args)이 λλ‚¬μŒ."
        
    

κΈ°λ³Έν˜• λ§€κ°œλ³€μˆ˜μ™€ μ°Έμ‘°ν˜• λ§€κ°œλ³€μˆ˜

κΈ°λ³Έν˜• λ§€κ°œλ³€μˆ˜ - λ³€μˆ˜κ°’μ„ 읽기만 ν•  수 있음 (read only)

μ°Έμ‘°ν˜• λ§€κ°œλ³€μˆ˜ - λ³€μˆ˜μ˜ 값을 읽고 λ³€κ²½ κ°€λŠ₯ (read & write)

μž¬κ·€ν˜ΈμΆœ

  1. μž¬κ·€ν˜ΈμΆœμ€ λ©”μ„œλ“œμ—μ„œ μžκΈ°μžμ‹ μ„ 반볡적으둜 ν˜ΈμΆœν•˜λŠ” 것.
  2. μž¬κ·€ν˜ΈμΆœμ€ 반볡문으둜 λ°”κΏ€μˆ˜μžˆκ³  반볡문 보닀 μ„±λŠ₯이 λ‚˜μ¨
  3. μ΄ν•΄ν•˜κΈ° 쉽고 κ°„κ²°ν•œ μ½”λ“œλ‘œ μž‘μ„±κ°€λŠ₯
  4. μ˜ˆμ‹œ) νŒ©ν† λ¦¬μ–Ό/제곱/νŠΈλ¦¬μš΄ν–‰/ 폴더λͺ©λ‘ν‘œμ‹œ

클래슀 λ§€μ„œλ“œμ™€ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ

μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ

  1. μΈμŠ€ν„΄μŠ€ 생성 ν›„ β€˜μ°Έμ‘°λ³€μˆ˜.λ©”μ„œλ“œμ΄λ¦„()β€™μœΌλ‘œ 호좜
  2. μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ‚˜ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œμ™€ κ΄€λ ¨λœ μž‘μ—…μ„ ν•˜λŠ” λ©”μ„œλ“œ
  3. λ©”μ„œλ“œ λ‚΄μ—μ„œ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ μ‚¬μš© κ°€λŠ₯

클래슀 λ©”μ„œλ“œ (static method)

  1. 객체 생성없이 β€˜ν΄λž˜μŠ€μ΄λ¦„.λ©”μ„œλ“œμ΄λ¦„()β€™μœΌλ‘œ 호좜
  2. μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ‚˜ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œμ™€ κ΄€λ ¨μ—†λŠ” μž‘μ—…μ„ ν•˜λŠ” λ©”μ„œλ“œ
  3. λ©”μ„œλ“œ λ‚΄μ—μ„œ μΈμŠ€ν„΄μŠ€λ³€μˆ˜ μ‚¬μš© λΆˆκ°€
  4. λ©”μ„œλ“œ λ‚΄μ—μ„œ μΈμŠ€ν„΄μŠ€λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ static을 λΆ™μ΄λŠ” 것을 κ³ λ €

클래슀 멀버와 μΈμŠ€ν„΄μŠ€ λ©€λ²„κ°„μ˜ 참쑰와 호좜

1) 같은 클래슀의 λ©€λ²„κ°„μ—λŠ” κ°μ²΄μƒμ„±μ΄λ‚˜ μ°Έμ‘°λ³€μˆ˜ 없이 μ°Έμ‘°ν•  수 μžˆμ§€λ§Œ

2) static멀버듀은 μΈμŠ€ν„΄μŠ€ 멀버듀을 μ°Έμ‘°ν•  수 μ—†μŒ.

μ˜€λ²„λ‘œλ”©

  1. ν•˜λ‚˜μ˜ ν΄λž˜μŠ€μ— 같은 μ΄λ¦„μ˜ λ©”μ„œλ“œλ₯Ό μ—¬λŸ¬κ°œ μ •μ˜ν•˜λŠ” 것을 λ©”μ„œλ“œ μ˜€λ²„λ‘œλ”©μ΄λΌ 함.
  2. μ˜€λ²„λ‘œλ”©μ˜ 쑰건

    (1) λ©”μ„œλ“œμ˜ 이름이 κ°™μ•„μ•Ό 함

    (2) λ§€κ°œλ³€μˆ˜μ˜ 개수 λ˜λŠ” νƒ€μž…μ΄ 달라야 함.

    (3) λ§€κ°œλ³€μˆ˜λŠ” κ°™κ³  리턴(λ°˜ν™˜)νƒ€μž…μ΄ λ‹€λ₯Έ κ²½μš°λŠ” μ˜€λ²„λ‘œλ”©μ΄ μ„±λ¦½λ˜μ§€ μ•ŠμŒ. - λ¦¬ν„΄νƒ€μž…μ€ μ˜€λ²„λ‘œλ”©μ„ κ΅¬ν˜„ν•˜λŠ”λ° μ•„λ¬΄λŸ° 영ν–₯을 μ£Όμ§€ μ•ŠμŒ.

  3. μ˜ˆμ‹œ

    (1) System.out.println λ©”μ„œλ“œ

    λ‹€μ–‘ν•˜κ²Œ μ˜€λ²„λ‘œλ”©λœ λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•¨μœΌλ‘œμ¨ λͺ¨λ“  λ³€μˆ˜λ₯Ό 좜λ ₯ν•  수 μžˆλ„λ‘ 섀계

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
         void println()
         void println(boolean x)
         void println(char x)
         void println(char[] x)
         void println(double x)
         void println(float x)
         void println(int x)
         void println(long x)
         void println(Object x)
         void println(String x)
    

    (2) λ§€κ°œλ³€μˆ˜μ˜ 이름이 λ‹€λ₯Έ 것은 μ˜€λ²„λ‘œλ”©μ΄ μ•„λ‹˜,

    • int add(int a, int b) {return a+b};
    • int add(int x, int y) {return x+y};

    (3) λ¦¬ν„΄νƒ€μž…μ€ μ˜€λ²„λ‘œλ”© 성립쑰건이 μ•ˆλ¨,

    • int add(int a, int b){return a+b}
    • long add(int a, int b){retrun (long)(a+b);}

    (4) λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ΄ λ‹€λ₯Έ 것은 성립.

    • long add (int a, long b) (return a+b;}
    • long add(int a, int b){retrun a+b;}

    (5) μ˜€λ²„λ‘œλ”©μ˜ μ˜¬λ°”λ₯Έ 예

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
     //같은 의미의 μž‘μ—…μ΄ μ•„λž˜  3ν–‰μ—μ„œ μ§„ν–‰λ˜κ³  있음. - μ˜€λ²„λ‘œλ”©
     int add (int a, int b){ return a+b ;}
     long add (long a,long b) {return a+b;}
     int add(int[]a){
     	int result=0;
     	for(int i =0; i< a.length; i++}{
     		result+=a[i];
     		}
     		return result;
     }
    




Comment

λ“œλ””μ–΄ 객체지ν–₯ 아직은 크게 μ™€λ‹Ώμ§€λŠ” μ•Šκ³  κ·Έλƒ₯ κ·ΈλŸ°κ°€λ³΄λ‹€ ν•˜λŠ” 정도이닀..
λ‚΄κ°€ μ΄ν•΄ν•œ 건 μ½”λ“œλ₯Ό μœ μ§€λ³΄μˆ˜ ν•˜κ³  μž¬μ‚¬μš©μ„±μ„ 높이렀고 λ‹€λ₯Έ 클래슀λ₯Ό κ°€μ Έμ™€μ„œ μ‚¬μš©ν•˜λŠ” 것.
그것을 객체라고 λΆ€λ₯΄λŠ” 것…?인 것 κ°™λ‹€
아직 객체지ν–₯의 μ‹œμž‘μ΄μ§€λ§Œ λ„λŒ€μ²΄ μ–Όλ§ˆλ‚˜ μ–΄λ €μšΈκΉŒ κΈ°λŒ€κ°€ λœλ‹€..!


참고자료 - μžλ°”μ˜ 정석




JAVA-Learn μΉ΄ν…Œκ³ λ¦¬ λ‚΄ λ‹€λ₯Έ κΈ€ λ³΄λŸ¬κ°€κΈ°

Leave a comment