🏁 기타/μ½”λ“œν”„λ ˆμ†Œ μ²΄ν—˜λ‹¨_BE

[Java] 클래슀 | Method | μƒμ„±μž | μ˜€λ²„λ‘œλ”©

Dhey 2022. 1. 19. 00:54
λ°˜μ‘ν˜•
클래슀

λ­” κΈ°λ³Έλ‹¨μœ„,
객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ 섀계도(ν‹€)

 

- 객체λ₯Ό λ§Œλ“€κΈ° μœ„ν•œ ν‹€, ν…œν”Œλ¦Ώ, 섀계도

- 객체 생성을 μœ„ν•œ 정보듀을

  (μ–΄λ–€ 속성과 ν–‰μœ„λ“€μ„ 포함할 κ²ƒμΈμ§€μ˜ 정보λ₯Ό 포함) 

 

 

≫ 좔상화(Abstraction)

  - λ°˜λ“œμ‹œ ν•„μš”ν•œ 것듀을 μ„ νƒν•˜κ³ , λΆˆν•„μš”ν•œ 것듀을 λ²„λ¦¬λŠ” κ³Όμ •

  - μΆ”μƒν™”μ˜ κ³Όμ • μžμ²΄κ°€ ν•˜λ‚˜μ˜ 클래슀λ₯Ό μ„€κ³„ν•˜λŠ” 과정이닀.

    → 즉, νŠΉμ • 객체에 λ°˜λ“œμ‹œ ν•„μš”ν•œ 속성과 ν–‰μœ„λ₯Ό μ •μ˜ν•˜λŠ” κ³Όμ •μž„

 

 

클래슀 μ„ μ–Έ

클래슀 ν˜•μ‹

* λ³€μˆ˜λŠ” 멀버 λ³€μˆ˜, μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λΌκ³  λΆ€λ₯΄κ³ , λ©”μ†Œλ“œλŠ” λ©”μ†Œλ“œ, μΈμŠ€ν„΄μŠ€ λ©”μ†Œλ“œλΌκ³  λΆ€λ₯Έλ‹€.

 

- class ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜κ³ , λ‚΄λΆ€μ—λŠ” λ³€μˆ˜λ“€κ³Ό λ©”μ†Œλ“œλ“€μ΄ μ‘΄μž¬ν•œλ‹€. (=클래슀의 멀버 라고도 함)

- 클래슀 이름은 λŒ€λ¬Έμžλ‘œ μ‹œμž‘ν•˜λ©° μƒμ„±λ˜λŠ” 객체λ₯Ό κ°€μž₯ 잘 ν‘œν˜„ν•˜λŠ” λͺ…사 ν˜•νƒœμ˜ μ˜λ―ΈμžˆλŠ” μ΄λ¦„μœΌλ‘œ μž‘λͺ…ν•œλ‹€.

 

 

객체 μƒμ„±ν•˜κΈ°

≫ new ν‚€μ›Œλ“œλ‘œ 객체λ₯Ό μƒμ„±ν•œλ‹€.

클래슀λͺ… λ³€μˆ˜λͺ… = new 클래슀λͺ…( );

→ ν΄λž˜μŠ€λ‘œλΆ€ν„° 객체λ₯Ό μƒμ„±ν•˜κ³  κ·Έ 객체에 λŒ€ν•œ μ°Έμ‘° 정보λ₯Ό λ³€μˆ˜μ— μ €μž₯ν•˜λŠ” 역할을 ν•œλ‹€.

 

 

객체의 멀버 λ³€μˆ˜μ— μ ‘κ·Όν•˜κΈ°

≫ 점 μ—°μ‚°μž(dot operator)둜 객체의 멀버에 접근이 κ°€λŠ₯ν•˜λ‹€.

κ°μ²΄μ°Έμ‘°λ³€μˆ˜λͺ….λ©€λ²„λ³€μˆ˜λͺ…

→ 멀버 λ³€μˆ˜μ— 접근을 ν†΅ν•΄μ„œ 객체의 멀버 λ³€μˆ˜μ— μƒˆλ‘œμš΄ 값을 μ €μž₯ν•˜κ±°λ‚˜, μ €μž₯λ˜μ–΄ μžˆλŠ” 값을 μ‚¬μš©ν•  수 μžˆλ‹€.

 

 


 

λ©”μ†Œλ“œ
(Method)


νŠΉμ • μž‘μ—…μ„ μœ„ν•œ μ½”λ“œλ“€μ˜ μ§‘ν•©

 

* λ©”μ†Œλ“œ vs ν•¨μˆ˜

  β‰« λ©”μ†Œλ“œ

    : νŠΉμ • 객체 λ‚΄λΆ€μ—μ„œ μ‘΄μž¬ν•˜κ³ , 객체의 멀버 λ³€μˆ˜μ— λŒ€ν•œ 연산이 κ°€λŠ₯ν•˜λ‹€.

  ≫ ν•¨μˆ˜

    : λ…λ¦½μ μœΌλ‘œ μ‘΄μž¬ν•˜λ©°, νŠΉμ • μž‘μ—…μ— ν•„μš”ν•œ ν•¨μˆ˜λ₯Ό λͺ¨λ‘ μ œκ³΅ν•΄μ•Ό ν•œλ‹€.

 

 

Method 문법

Method ν˜•μ‹

 

- Inputκ³Ό Output이 μ‘΄μž¬ν•œλ‹€.

  (Output은 μ—†κ±°λ‚˜ 리턴 κ°’μœΌλ‘œ ν‘œμ‹œ, 리턴 νƒ€μž…μ€ λ¦¬ν„΄λ˜λŠ” κ°’μ˜ μžλ£Œν˜• (* 없을 경우 void))

- λ©”μ†Œλ“œ 이름은 첫 λ‹¨μ–΄λŠ” μ†Œλ¬Έμžλ‘œ μ‹œμž‘ν•˜λ©° λ©”μ†Œλ“œμ˜ 행동을 λͺ…ν™•ν•˜κ²Œ ν‘œν˜„ν•˜λŠ” λ™μ‚¬λ‘œ μž‘λͺ…ν•œλ‹€.

- λ³„λ„μ˜ 데이터(인자)λ₯Ό μ „λ‹¬ν•˜μ§€ μ•Šμ•„λ„ 객체의 멀버 λ³€μˆ˜μ— λŒ€ν•œ 연산이 κ°€λŠ₯ν•˜λ‹€.

νŒŒλΌλ―Έν„°λ₯Ό μ „λ‹¬ν•˜μ§€ μ•Šμ•˜μŒμ—λ„ 객체의 멀버 λ³€μˆ˜μ— λŒ€ν•œ 연산이 κ°€λŠ₯함

 

- νŒŒλΌλ―Έν„°λŠ” λ©”μ†Œλ“œμ˜ input λ°μ΄ν„°λ‘œ, λ©”μ†Œλ“œ 이름 뒀에 μœ„μΉ˜ν•˜λ©° μ†Œκ΄„ν˜Έ 내뢀에 'μžλ£Œν˜• λ³€μˆ˜λͺ…' 쌍으둜 ν‘œν˜„ν•œλ‹€. (즉, νŒŒλΌλ―Έν„°λŠ” λ§€κ°œλ³€μˆ˜μ΄λ―€λ‘œ input 데이터가 전달 됐을 λ•Œ 데이터λ₯Ό μ €μž₯ν•˜λŠ” λ³€μˆ˜μž„)

 

 

≫ ν•œ 객체의 private 멀버 λ³€μˆ˜ email의 값을 μ €μž₯ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό μΆ”κ°€ν•˜λŠ” μ˜ˆμ‹œμ΄λ‹€.

λ…Έλž€ λ„€λͺ¨ λ°•μŠ€κ°€ νŒŒλΌλ―Έν„°μ΄λ‹€

이 μ˜ˆμ‹œλŠ” νŒŒλΌλ―Έν„°λ‘œ 받은 λ³€μˆ˜λ₯Ό this.email에 μ €μž₯ν•œλ‹€.

 

 

≫ 그럼 μ—¬κΈ°μ„œ thisλŠ” λ¬΄μ—‡μΌκΉŒ?

   : 객체 λ‚΄λΆ€μ—μ„œμ˜ thisλŠ” ν•΄λ‹Ή 객체 μžμ‹ μ„ μ˜λ―Έν•œλ‹€. (ν˜„μž¬ μƒμ„±λ˜μ–΄μžˆλŠ” λ‚΄ μžμ‹ )

    (* λ³€μˆ˜μ˜ 이름이 μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” 경우 this둜 λͺ…μ‹œν•˜μ§€ μ•Šμ•„λ„ 됨)

this.email은 객체의 λ©€λ²„λ³€μˆ˜ email을 가리킴

 

 

≫ μΈμž(argument) vs νŒŒλΌλ―Έν„°(λ§€κ°œλ³€μˆ˜)

  - 인자: λ©”μ†Œλ“œμ— μ „λ‹¬ν•˜λŠ” 데이터(κ°’)

  - νŒŒλΌλ―Έν„°: μ „λ‹¬λ°›λŠ” 인자 값을 μ €μž₯ν•˜λŠ” λ³€μˆ˜

 

 

Setter Method
: 멀버 λ³€μˆ˜μ˜ 값을 μ €μž₯(λ³€κ²½)ν•˜λŠ” λ©”μ†Œλ“œ

≫ κ°μ²΄μ˜ λͺ¨λ“  private 멀버 λ³€μˆ˜μ— 값을 μ €μž₯ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό μΆ”κ°€ν•œλ‹€

≫ λ³΄ν†΅ 1개의 멀버 λ³€μˆ˜μ˜ 값을 μ„ΈνŒ…ν•˜λŠ” λ©”μ†Œλ“œλŠ” setμ΄λΌλŠ” λ™μ‚¬λ‘œ μ‹œμž‘ν•œλ‹€

    → 이λ₯Ό setter λ˜λŠ” setter method 라고 ν•œλ‹€ 

 

Getter method
: 멀버 λ³€μˆ˜μ˜ 값을 λ°˜ν™˜ν•˜λŠ” λ©”μ†Œλ“œ

≫ 객체의 λͺ¨λ“  private 멀버 λ³€μˆ˜μ— 값을 λ°˜ν™˜ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό μΆ”κ°€ν•œλ‹€

≫ 보톡 1개의 멀버 λ³€μˆ˜μ˜ 값을 λ°˜ν™˜ν•˜λŠ” λ©”μ†Œλ“œλŠ” getμ΄λΌλŠ” λ™μ‚¬λ‘œ μ‹œμž‘ν•œλ‹€

    → 이λ₯Ό getter λ˜λŠ” getter method라고 μ§€μΉ­ν•œλ‹€.

 

 

 

IntelliJμ—μ„œ μ‰½κ²Œ λ©€λ²„λ³€μˆ˜μ— λŒ€ν•œ setter와 getterλ₯Ό μƒμ„±ν•˜λŠ” 방법!

 

≫ μƒλ‹¨μ˜ Codeμ—μ„œ Generateλ₯Ό μ„ νƒν•œλ‹€

 

≫ Getter, Setter, Getter and Setter 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•œλ‹€.

 

≫ Getter, Setterλ₯Ό λ§Œλ“€κ³  싢은 λ©€λ²„λ³€μˆ˜λ₯Ό μ„ νƒν•œ ν›„ OKλ₯Ό ν΄λ¦­ν•œλ‹€.

 

≫ λ©€λ²„λ³€μˆ˜μ— λŒ€ν•œ getterκ°€ ν•œλ²ˆμ— μƒμ„±λ˜μ—ˆμŒμ„ 확인할 수 μžˆλ‹€. 

 

 


 

* μΊ‘μŠν™”μ˜ 2κ°€μ§€ 의미

  - 객체의 속성과 행동을 ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ κ·Έλ£Ήν™”ν•œλ‹€.

  - 객체의 속성과 행동을 μ€λ‹‰ν•œλ‹€.

    (λ°˜λ“œμ‹œ ν•„μš”ν•œ 속성 및 ν–‰λ™λ§Œ 외뢀에 λ…ΈμΆœν•œλ‹€, λŒ€λΆ€λΆ„μ˜ 속성 및 행동은 μ™ΈλΆ€μ—μ„œ μ ‘κ·Όν•˜μ§€ λͺ»ν•˜λ„둝 λ§‰λŠ”λ‹€)

 

 

* 객체의 정보은닉(Information Hiding)이 ν•„μš”ν•œ 이유

- 객체 λ‚΄λΆ€μ—λŠ” μ™ΈλΆ€μ—μ„œ μ ‘κ·Όν•΄μ„œ λ³€κ²½ν•˜λ©΄ μ•ˆλ˜λŠ” 속성이 μ‘΄μž¬ν•œλ‹€

- λ°˜λ“œμ‹œ ν•„μš”ν•œ λ©€λ²„λ§Œ 외뢀에 λ…ΈμΆœν•˜μ—¬ 결합도λ₯Ό 쀄일 수 μžˆλ‹€

 

 

* 객체의 정보은닉 방법

  - μ ‘κ·Ό μ œμ–΄μž(Access Modifier)λ₯Ό ν™œμš©ν•˜μ—¬ λ©€λ²„μ˜ 접근을 μ œμ–΄ν•œλ‹€.

    (* μ ‘κ·Ό μ œμ–΄μžλ₯Ό default둜 두지 말고 λ°˜λ“œμ‹œ μ μ ˆν•˜κ²Œ λͺ…μ‹œν•΄μ•Ό 함)

Java μ ‘κ·Ό μ œμ–΄μžμ˜ μ’…λ₯˜

 

 


 

μƒμ„±μž
(Constructor)


객체가 μƒμ„±λ˜λŠ” μ‹œμ μ— ν˜ΈμΆœλ˜λŠ” νŠΉλ³„ν•œ ν˜•νƒœμ˜ λ©”μ†Œλ“œ

 

μƒμ„±μž ν˜•μ‹

· μƒμ„±μž 이름은 클래슀의 이름과 λ™μΌν•˜λ‹€.

· μ ‘κ·Ό μ œμ–΄μžλŠ” 보톡 public을 μ‚¬μš©ν•œλ‹€.

· 0개 λ˜λŠ” 1개 μ΄μƒμ˜ νŒŒλΌλ―Έν„° 선언이 κ°€λŠ₯ν•˜λ©°, λ¦¬ν„΄νƒ€μž…μ€ μƒλž΅λœλ‹€.

 → 객체가 μƒμ„±λ˜λŠ” μ‹œμ μ— μ΄ˆκΈ°ν™”λ₯Ό ν•˜κΈ° μœ„ν•΄ μ‚¬μš© λœλ‹€. (주둜 객체 멀버 λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™” μž‘μ—…μ„ 함)

 

 

* Default μƒμ„±μžλŠ” λͺ…μ‹œμ μœΌλ‘œ κ΅¬ν˜„ 된 μƒμ„±μžκ°€ 없을 κ²½μš°μ—λ§Œ μ œκ³΅λœλ‹€.

λ”°λΌμ„œ, μƒμ„±μžλ₯Ό κ΅¬ν˜„ ν•œ 경우 Default μƒμ„±μžλ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€.

μ™Όμͺ½μ˜ νŒŒλΌλ―Έν„°κ°€ μžˆλŠ” μƒμ„±μžλ₯Ό λ§Œλ“€μ—ˆκΈ°μ—, 였λ₯Έμͺ½ 객체λ₯Ό 생성할 λ•Œ Default κ°’μœΌλ‘œ μ„ μ–Έν•˜λ©΄ Errorκ°€ λ‚œλ‹€ 

 

 

 

λ©”μ†Œλ“œ μ˜€λ²„λ‘œλ”©(Method Overloading)
: μ„œλ‘œ λ‹€λ₯Έ μ‘°ν•©μ˜ νŒŒλΌλ―Έν„°λ₯Ό μ‚¬μš©ν•˜λŠ” λ™μΌν•œ μ΄λ¦„μ˜ λ©”μ†Œλ“œλ₯Ό ν•œ 클래슀 λ‚΄λΆ€μ—μ„œ μ‚¬μš© ν•˜λŠ” 것

λ™μΌν•œ 이름이고 νŒŒλΌλ―Έν„°κ°€ λ‹€λ₯΄λ‹€

- νŠΉμ • 클래슀 μ•ˆμ—μ„œ νŒŒλΌλ―Έν„°κ°€ λ‹€λ₯Έ λ™μΌν•œ μ΄λ¦„μ˜ λ©”μ†Œλ“œλ₯Ό μ„ μ–Έν•  수 μžˆλ‹€

- νŒŒλΌλ―Έν„°μ˜ μžλ£Œν˜• λ˜λŠ” κ°œμˆ˜κ°€ λ‹€λ₯΄λ©΄ λ™μΌν•œ 이름이 μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.

- λ©”μ†Œλ“œ 호좜 μ‹œ νŒŒλΌλ―Έν„° μ„ΈνŒ… 쑰건에 따라 ν˜ΈμΆœλ˜λŠ” λ©”μ†Œλ“œκ°€ κ²°μ • λœλ‹€

- 리턴 νƒ€μž…μ€ λ©”μ†Œλ“œ μ˜€λ²„λ‘œλ”©μ˜ 쑰건에 ν•΄λ‹Ήν•˜μ§€ μ•ŠλŠ”λ‹€.

 

* λ©”μ†Œλ“œ μ˜€λ²„λ‘œλ”©μ˜ μ ν•©ν•œ μ˜ˆμ‹œ
  - public int add(int a, int b)
  - public int add(int a, int b, int c) _ νŒŒλΌλ―Έν„°μ˜ κ°œμˆ˜κ°€ 닀름
  - public double add(double a, double b) _ νŒŒλΌλ―Έν„°μ˜ κ°œμˆ˜λŠ” κ°™μ§€λ§Œ μžλ£Œν˜•μ΄ 닀름

* λ©”μ†Œλ“œ μ˜€λ²„λ‘œλ”©μ˜ λΆ€μ ν•©ν•œ μ˜ˆμ‹œ
  - public int add(int a, int b)
  - public int add(int a, int b) _ νŒŒλΌλ―Έν„°, 이름이 μ™„μ „νžˆ 동일
  - public long add(int a, int b) _ 리턴 νƒ€μž…μ€ λ‹€λ₯΄μ§€λ§Œ, νŒŒλΌλ―Έν„°κ°€ 동일함

 

 

μƒμ„±μž μ˜€λ²„λ‘œλ”©

- μ΄ˆκΈ°ν™”λ₯Ό μ›ν•˜λŠ” 멀버 λ³€μˆ˜λ§Œ μ„ νƒν•΄μ„œ μ΄ˆκΈ°ν™” ν•  수 μžˆλ‹€ (λΉˆλ²ˆν•˜κ²Œ μ‚¬μš© 됨)

- μƒμ„±μžλ„ μ˜€λ²„λ‘œλ”©μ΄ κ°€λŠ₯ν•˜λ‹€

 

 

 


 

μ½”λ“œν”„λ ˆμ†Œ Java μ›Ή 개발 μ²΄ν—˜λ‹¨ ν™œλ™ 쀑 'Java ν”„λ‘œκ·Έλž˜λ° μ΄ˆκΈ‰' μ΄λŸ¬λ‹ κ°•μ˜λ₯Ό λ“£κ³  μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€ :)
μ½”λ“œν”„λ ˆμ†Œ URL: https://www.codepresso.kr/

 

프리미엄 IT ꡐ윑 μ„œλΉ„μŠ€ - μ½”λ“œν”„λ ˆμ†Œ

 

www.codepresso.kr

λ°˜μ‘ν˜•