[JAVA] 11. 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°4. μ˜€λ²„λ‘œλ”©, μƒμ„±μž, λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™”

2022. 4. 17. 12:33ㆍJAVA/μžλ°”μ˜ 정석

728x90

 

1️⃣ μ˜€λ²„λ‘œλ”©

λ©”μ„œλ“œλ„ λ³€μˆ˜μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 같은 클래슀 λ‚΄μ—μ„œ μ„œλ‘œ ꡬ별될 수 μžˆμ–΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— 각기 λ‹€λ₯Έ 이름을 κ°€μ Έμ•Ό ν•œλ‹€. 

κ·ΈλŸ¬λ‚˜ μžλ°”μ—μ„œλŠ” ν•œ 클래슀 λ‚΄μ—μ„œ 이미 μ‚¬μš©ν•˜λ €λŠ” 이름과 같은 이름을 가진 λ©”μ„œλ“œκ°€ μžˆλ”λΌλ„ λ§€κ°œλ³€μˆ˜μ˜ 개수 λ˜λŠ” νƒ€μž…μ΄ λ‹€λ₯΄λ©΄, 같은 이름을 μ‚¬μš©ν•΄μ„œ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•  수 μžˆλ‹€. 

 

ν•œ 클래슀 내에 같은 μ΄λ¦„μ˜ λ©”μ„œλ“œλ₯Ό μ—¬λŸ¬ 개 μ •μ˜ν•˜λŠ” 것을 'λ©”μ„œλ“œ μ˜€λ²„λ‘œλ”©' λ˜λŠ” 'μ˜€λ²„λ‘œλ”©' 이라고 ν•œλ‹€. 

 

- μ˜€λ²„λ‘œλ”© 쑰건

1. λ©”μ„œλ“œ 이름이 κ°™μ•„μ•Ό ν•œλ‹€.

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

그리고 λ°˜ν™˜νƒ€μž…μ€ μ˜€λ²„λ‘œλ”©μ„ κ΅¬ν˜„ν•˜λŠ”λ° μ•„λ¬΄λŸ° 영ν–₯을 주지 μ•ŠλŠ”λ‹€!!!

 

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

μ˜€λ²„λ‘œλ”©μ˜ λŒ€ν‘œμ μΈ μ˜ˆλŠ” println() λ©”μ„œλ“œμ΄λ‹€. 

μ‹€μ œλ‘œλŠ” println λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ λ§€κ°œλ³€μˆ˜λ‘œ μ§€μ •ν•˜λŠ” κ°’μ˜ νƒ€μž…μ— λ”°λΌμ„œ ν˜ΈμΆœλ˜λŠ” println λ©”μ„œλ“œκ°€ 달라진닀. 

 

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

-> μœ„μ— 두 λ©”μ„œλ“œλŠ” λ§€κ°œλ³€μˆ˜ μ΄λ¦„λ§Œ λ‹€λ₯Ό 뿐 λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ΄ κ°™κΈ° λ•Œλ¬Έμ— μ˜€λ²„λ‘œλ”©μ΄ μ„±λ¦½ν•˜μ§€ μ•ŠλŠ”λ‹€. 

λ§€κ°œλ³€μˆ˜μ˜ 이름이 λ‹€λ₯΄λ©΄ λ©”μ„œλ“œ λ‚΄μ—μ„œ μ‚¬μš©λ˜λŠ” λ³€μˆ˜μ˜ 이름이 λ‹¬λΌμ§ˆλΏμ΄μ§€ μ•„λ¬΄λŸ° μ˜λ―Έκ°€ μ—†λ‹€.

 

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

-> 이번 κ²½μš°μ—λŠ” 리턴 νƒ€μž…λ§Œ λ‹€λ₯Έ 것이기 λ•Œλ¬Έμ— μ˜€λ²„λ‘œλ”©μœΌλ‘œ κ°„μ£Όν•˜μ§€ μ•ŠλŠ”λ‹€.

 

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

-> 두 λ©”μ„œλ“œ λͺ¨λ‘ int ν˜•κ³Ό long ν˜• λ§€κ°œλ³€μˆ˜κ°€ ν•˜λ‚˜μ”© μ„ μ–Έλ˜μ—ˆμ§€λ§Œ μ„œλ‘œ μˆœμ„œκ°€ λ‹€λ₯Έ κ²½μš°μ΄λ‹€. 

이처럼 λ§€κ°œλ³€μˆ˜μ˜ μˆœμ„œλ§Œμ„ λ‹€λ₯΄κ²Œ ν•˜μ—¬ κ΅¬ν˜„ν•˜λ©΄ μ‚¬μš©μžκ°€ λ§€κ°œλ³€μˆ˜μ˜ μˆœμ„œλ₯Ό μ™Έμš°μ§€ μ•Šμ•„λ„ λœλ‹€λŠ” μž₯점은 μžˆμ§€λ§Œ, 였히렀 단점이 될 μˆ˜λ„ 있기 λ•Œλ¬Έμ— μ£Όμ˜ν•΄μ•Όν•œλ‹€!!!

add(3,3) μ΄λ ‡κ²Œ ν˜ΈμΆœν•˜λ©΄ 컴파일 μ—λŸ¬κ°€ λ°œμƒν•˜λŠ”λ° μ™œλƒν•˜λ©΄ 두 λ©”μ„œλ“œ 쀑 μ–΄λŠ λ©”μ„œλ“œλ₯Ό 호좜된 것인지 μ•Œ 수 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€. 

 

 

2️⃣ μ˜€λ²„λ‘œλ”© μž₯점 

println()을 생각해보면 λͺ¨λ‘ 근본적으둜 같은 κΈ°λŠ₯을 ν•˜λŠ” λ©”μ„œλ“œλ“€μΈλ° μ„œλ‘œ λ‹€λ₯Έ 이름을 κ°€μ Έμ•Όν•œλ‹€κ³  ν•œλ‹€λ©΄ λ©”μ„œλ“œλ₯Ό μž‘μ„±ν•˜λŠ” μͺ½μ—μ„œλŠ” 이름을 짓기 μ–΄λ ΅κ³ , λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” μͺ½μ—μ„œλŠ” 이름을 일일이 κ΅¬λΆ„ν•΄μ„œ κΈ°μ–΅ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— μ„œλ‘œ 뢀담이 λœλ‹€. 

 

ν•˜μ§€λ§Œ μ˜€λ²„λ‘œλ”©μ„ 톡해 μ—¬λŸ¬ λ©”μ„œλ“œλ“€μ΄ printlnμ΄λΌλŠ” ν•˜λ‚˜μ˜ μ΄λ¦„μœΌλ‘œ μ •μ˜λ  수 μžˆλ‹€λ©΄ printlnμ΄λΌλŠ” μ΄λ¦„λ§Œ κΈ°μ–΅ν•˜λ©΄ 되기 λ•Œλ¬Έμ— κΈ°μ–΅ν•˜κΈ°λ„ 쉽고 이름도 짧게 ν•  수 μžˆμ–΄μ„œ 였λ₯˜μ˜ κ°€λŠ₯성을 많이 쀄일 수 μžˆλ‹€. 

 

그리고 또 ν•˜λ‚˜μ˜ μž₯점은 λ©”μ„œλ“œ 이름을 μ ˆμ•½ν•  수 μžˆλ‹€λŠ” 것이닀. 

 

 

3️⃣ κ°€λ³€μΈμžμ™€ μ˜€λ²„λ‘œλ”© 

κΈ°μ‘΄μ—λŠ” λ©”μ„œλ“œμ˜ λ§€κ°œλ³€μˆ˜ κ°œμˆ˜κ°€ κ³ μ •μ μ΄μ—ˆμœΌλ‚˜, jdk1.5λΆ€ν„° λ™μ μœΌλ‘œ 지정해쀄 수 있게 λ˜μ—ˆμœΌλ©° 이 κΈ°λŠ₯을 κ°€λ³€μΈμžλΌκ³  ν•œλ‹€. 

νƒ€μž…... λ³€μˆ˜λͺ…

-> μ΄λ ‡κ²Œ κ°€λ³€μΈμžλ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ ν–ˆκΈ° λ•Œλ¬Έμ— λ¬Έμžμ—΄μ˜ 개수의 μ œμ•½μ—†μ΄ λ§€κ°œλ³€μˆ˜λ‘œ 지정할 수 μžˆλ‹€. 

 

 

4️⃣ μƒμ„±μž Constructor

μƒμ„±μžλŠ” μΈμŠ€ν„΄μŠ€κ°€ 생성될 λ•Œ ν˜ΈμΆœλ˜λŠ” 'μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™” λ©”μ„œλ“œ'이닀. 

λ”°λΌμ„œ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™” μž‘μ—…μ— 주둜 μ‚¬μš©λ˜λ©°, μΈμŠ€ν„΄μŠ€ 생성 μ‹œ μ‹€ν–‰λ˜μ–΄μ•Ό ν•  μž‘μ—…μ„ μœ„ν•΄μ„œλ„ μ‚¬μš©λœλ‹€. 

 

- μƒμ„±μž 쑰건

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

2. μƒμ„±μžλŠ” 리턴 값이 μ—†λ‹€. 

3. λͺ¨λ“  ν΄λž˜μŠ€λŠ” λ°˜λ“œμ‹œ μƒμ„±μžλ₯Ό κ°€μ Έμ•Όν•œλ‹€. 

 

class Card {
	Card() { 
    	// λ§€κ°œλ³€μˆ˜ μ—†λŠ” μƒμ„±μž, κΈ°λ³Έ μƒμ„±μž
    }
    
    Card(String k, int num) {
    	// λ§€κ°œλ³€μˆ˜κ°€ μžˆλŠ”μƒμ„±μž
    }
 }

❗️ 주의 

μ—°μ‚°μž newκ°€ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λŠ” 것이고, μƒμ„±μžλŠ” μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λŠ” 것은 μ•„λ‹ˆλ‹€! 

μƒμ„±μžλŠ” λ‹¨μˆœνžˆ μΈμŠ€ν„΄μŠ€λ³€μˆ˜λ“€μ˜ μ΄ˆκΈ°ν™”μ— μ‚¬μš©λ˜λŠ” 쑰금 νŠΉλ³„ν•œ λ©”μ„œλ“œμ΄λ‹€. 

 

Card c = new Card();

1. μ—°μ‚°μž new 에 μ˜ν•΄μ„œ λ©”λͺ¨λ¦¬ (heap)에 Card 클래슀의 μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λœλ‹€. 

2. μ—°μ‚°μž Card() κ°€ ν˜ΈμΆœλ˜μ–΄ μˆ˜ν–‰λœλ‹€. 

3. μ—°μ‚°μž new의 결과둜, μƒμ„±λœ Card μΈμŠ€ν„΄μŠ€μ˜ μ£Όμ†Œκ°€ λ°˜ν™˜λ˜μ–΄ μ°Έμ‘°λ³€μˆ˜ c에 μ €μž₯λœλ‹€. 

 

μ§€κΈˆκΉŒμ§€ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν–ˆλ˜ 'ν΄λž˜μŠ€μ΄λ¦„()' λŠ” 사싀 μƒμ„±μžμ˜€λ˜ 것이닀. 

μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•ŒλŠ” λ°˜λ“œμ‹œ 클래슀 내에 μ •μ˜λœ μƒμ„±μž μ€‘μ˜ ν•˜λ‚˜λ₯Ό μ„ νƒν•΄μ„œ μ§€μ •ν•΄μ€˜μ•Όν•œλ‹€. 

 

- κΈ°λ³Έ μƒμ„±μž 

μ§€κΈˆκΉŒμ§€ ν΄λž˜μŠ€μ— μƒμ„±μžλ₯Ό μ •μ˜ν•˜μ§€ μ•Šκ³ λ„ μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μžˆμ—ˆλ˜ μ΄μœ λŠ” μ»΄νŒŒμΌλŸ¬κ°€ μ œκ³΅ν•˜λŠ” 'κΈ°λ³Έ μƒμ„±μž' λ•λΆ„μ΄μ—ˆλ‹€.

μ»΄νŒŒμΌν•  λ•Œ μ†ŒμŠ€νŒŒμΌ (*.java) 의 ν΄λž˜μŠ€μ— μƒμ„±μžκ°€ ν•˜λ‚˜λ„ μ •μ˜λ˜μ§€ μ•Šμ€ 경우 μ»΄νŒŒμΌλŸ¬λŠ” μžλ™μ μœΌλ‘œ κΈ°λ³Έ μƒμ„±μžλ₯Ό μΆ”κ°€ν•˜μ—¬ μ»΄νŒŒμΌν•œλ‹€. 

 

μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μ μœΌλ‘œ μΆ”κ°€ν•΄μ£ΌλŠ” κΈ°λ³Έ μƒμ„±μžλŠ” λ§€κ°œλ³€μˆ˜λ„ μ—†κ³  ,μ•„λ¬΄λŸ° λ‚΄μš©λ„ μ—†λŠ” μ•„μ£Ό κ°„λ‹¨ν•œ 것이닀. 

 

 

κΈ°λ³Έμƒμ„±μžκ°€ μ»΄νŒŒμΌλŸ¬μ— μ˜ν•΄μ„œ μΆ”κ°€λ˜λŠ” κ²½μš°λŠ” ν΄λž˜μŠ€μ— μ •μ˜λœ μƒμ„±μžκ°€ ν•˜λ‚˜λ„ 없을 λ•Œ 이닀!

 

- λ§€κ°œλ³€μˆ˜κ°€ μžˆλŠ” μƒμ„±μž 

μƒμ„±μžλ„ λ©”μ„œλ“œμ²˜λŸΌ λ§€κ°œλ³€μˆ˜λ₯Ό μ„ μ–Έν•˜μ—¬ 호좜 μ‹œ 값을 λ„˜κ²¨λ°›μ•„μ„œ μΈμŠ€ν„΄μŠ€μ˜ μ΄ˆκΈ°ν™”μž‘μ—…μ— μ‚¬μš©ν•  수 μžˆλ‹€.

μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ 각기 λ‹€λ₯Έ κ°’μœΌλ‘œ μ΄ˆκΈ°ν™”λ˜μ–΄μ•Όν•˜λŠ” κ²½μš°κ°€ 많기 λ•Œλ¬Έμ— λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•œ μ΄ˆκΈ°ν™”λŠ” 맀우 μœ μš©ν•˜λ‹€. 

 

λ§€κ°œλ³€μˆ˜κ°€ μžˆλŠ” μƒμ„±μžλ₯Ό μ‚¬μš©ν•œλ‹€λ©΄ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λŠ” λ™μ‹œμ— μ›ν•˜λŠ” κ°’μœΌλ‘œ μ΄ˆκΈ°ν™”ν•  수 있게 λœλ‹€. 

 

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

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

같은 클래슀의 멀버듀 간에 μ„œλ‘œ ν˜ΈμΆœν•  수 μžˆλŠ” κ²ƒμ²˜λŸΌ μƒμ„±μž 간에도 μ„œλ‘œ 호좜이 κ°€λŠ₯ν•˜λ‹€. 

1. μƒμ„±μžμ˜ μ΄λ¦„μœΌλ‘œ 클래슀 이름 λŒ€μ‹  this μ‚¬μš©ν•΄μ•Όν•œλ‹€. 
2. ν•œ μƒμ„±μžμ—μ„œ λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•  λ•ŒλŠ” λ°˜λ“œμ‹œ μ²«μ€„μ—μ„œλ§Œ ν˜ΈμΆœν•΄μ•Όν•œλ‹€. 
Car(String color) {
	door = 5;
    Car(color, "auto", 4);
}

-> μ—¬κΈ°μ„œλŠ” λ¨Όμ € λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•  λ•Œ thisκ°€ μ•„λ‹Œ Car 을 μ‚¬μš©ν•΄μ„œ μ—λŸ¬κ°€ λ‚˜κ³ , 또 λ‹€λ₯Έ μ—λŸ¬λŠ” μƒμ„±μž 호좜이 첫번째 쀄이 μ•„λ‹Œ λ‘λ²ˆμ§Έ μ€„μ—μ„œ ν˜ΈμΆœν–ˆκΈ° λ•Œλ¬Έμ΄λ‹€.

 

μƒμ„±μžμ—μ„œ λ‹€λ₯Έ μƒμ„±μžλ₯Ό μ²«μ€„μ—μ„œλ§Œ 호좜이 κ°€λŠ₯ν•˜λ„λ‘ ν•œ μ΄μœ λŠ” μƒμ„±μž λ‚΄μ—μ„œ μ΄ˆκΈ°ν™” μž‘μ—… 도쀑에 λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜κ²Œ 되면, 호좜된 λ‹€λ₯Έ μƒμ„±μž λ‚΄μ—μ„œλ„ λ©€λ²„λ³€μˆ˜λ“€μ˜ 값을 μ΄ˆκΈ°ν™”ν•  κ²ƒμ΄λ―€λ‘œ λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜κΈ° μ΄μ „μ˜ μ΄ˆκΈ°ν™” μž‘μ—…μ΄ λ¬΄μ˜λ―Έν•΄μ§ˆ 수 있기 λ•Œλ¬Έμ΄λ‹€.

this("white", "auto", 4); 처럼 μƒμ„±μžλ₯Ό ν™œμš©ν•΄μ„œ 더 κ°„λ ₯히 ν•  수 있기 λ•Œλ¬Έμ— 보기에도 더 νŽΈν•˜λ‹€. 

이 μ½”λ“œλŠ” Car c1 = new Car(); 처럼 μƒμ„±μž Car()λ₯Ό ν™œμš©ν•΄μ„œ Car μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 κ²½μš°μ— μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ colorλŠ” white, geertype은 auto, doorλŠ” 4둜 μ΄ˆκΈ°ν™” λ˜λ„λ‘ ν•˜μ˜€λ‹€. 

 

- μ°Έμ‘°λ³€μˆ˜λ‘œ μΈμŠ€ν„΄μŠ€ μžμ‹ μ„ κ°€λ¦¬ν‚€λŠ” this 

this λŠ” μΈμŠ€ν„΄μŠ€ μžμ‹ μ„ κ°€λ¦¬ν‚€λŠ” μ°Έμ‘°λ³€μˆ˜λ‘œ μΈμŠ€ν„΄μŠ€μ˜ μ£Όμ†Œκ°€ μ €μž₯λ˜μ–΄ μžˆλ‹€. 

λͺ¨λ“  μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œμ— μ§€μ—­λ³€μˆ˜λ‘œ μˆ¨κ²¨μ§„μ±„λ‘œ μ‘΄μž¬ν•œλ‹€!

μ°Έμ‘°λ³€μˆ˜λ₯Ό 톡해 μΈμŠ€ν„΄μŠ€μ˜ 멀버에 μ ‘κ·Όν•  수 μžˆλŠ” κ²ƒμ²˜λŸΌ 'this'둜 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ— μ ‘κ·Όν•  수 μžˆλŠ” 것이닀.

 

근데 thisλ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” 것은 μΈμŠ€ν„΄μŠ€ 멀버 뿐이닀, μ™œλƒν•˜λ©΄ staticλ©”μ„œλ“œλŠ” μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ³ λ„ 호좜될 수 μžˆμœΌλ―€λ‘œ static λ©”μ„œλ“œκ°€ 호좜된 μ‹œμ μ— μΈμŠ€ν„΄μŠ€κ°€ μ‘΄μž¬ν•˜μ§€ μ•Šμ„ μˆ˜λ„ 있기 λ•Œλ¬Έμ΄λ‹€.

 

❗️ 그리고 참고둜 this와 this()λŠ” λΉ„μŠ·ν•˜κ²Œ 생겼을 뿐 μ™„μ „νžˆ λ‹€λ₯Έ 것이닀!!

 

- μƒμ„±μžλ₯Ό μ΄μš©ν•œ μΈμŠ€ν„΄μŠ€ 볡사

ν˜„μž¬ μ‚¬μš©ν•˜κ³  μžˆλŠ” μΈμŠ€ν„΄μŠ€μ™€ 같은 μƒνƒœλ₯Ό κ°–λŠ” μΈμŠ€ν„΄μŠ€λ₯Ό ν•˜λ‚˜ 더 λ§Œλ“€κ³ μž ν•  λ•Œ μƒμ„±μžλ₯Ό μ΄μš©ν•  수 μžˆλ‹€.

-> 두 μΈμŠ€ν„΄μŠ€κ°€ 같은 μƒνƒœλ₯Ό κ°–λŠ” λ‹€λŠ” 것은 두 μΈμŠ€ν„΄μŠ€μ˜ λͺ¨λ“  μΈμŠ€ν„΄μŠ€ λ³€μˆ˜(μƒνƒœ)κ°€ λͺ¨λ‘ λ™μΌν•œ 값을 κ°–κ³  μžˆλ‹€λŠ” 것을 λœ»ν•œλ‹€. 

 

 

5️⃣ λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™” 

λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  처음으둜 값을 μ €μž₯ν•˜λŠ” 것을 λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™”λΌκ³  ν•œλ‹€. 

λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™”λŠ” κ²½μš°μ— λ”°λΌμ„œ ν•„μˆ˜μ μ΄κΈ°λ„ ν•˜κ³  선택적이기도 ν•˜μ§€λ§Œ, κ°€λŠ₯ν•˜λ©΄ μ„ μ–Έκ³Ό λ™μ‹œμ— μ μ ˆν•œ κ°’μœΌλ‘œ μ΄ˆκΈ°ν™”ν•˜λŠ” 것이 λ°”λžŒμ§ν•˜λ‹€. 

λ©€λ²„λ³€μˆ˜λŠ” μ΄ˆκΈ°ν™”λ₯Ό ν•˜μ§€ μ•Šμ•„λ„ μžλ™μ μœΌλ‘œ λ³€μˆ˜μ˜ μžλ£Œν˜•μ— λ§žλŠ” κΈ°λ³Έν˜•κ°’μœΌλ‘œ μ΄ˆκΈ°ν™”κ°€ 이루어지기 λ•Œλ¬Έμ— μ΄ˆκΈ°ν™”ν•˜μ§€ μ•Šκ³ λ„ μ‚¬μš©ν•΄λ„ λ˜μ§€λ§Œ, μ§€μ—­λ³€μˆ˜λŠ” μ‚¬μš©ν•˜κΈ° μ „μ—λŠ” λ°˜λ“œμ‹œ μ΄ˆκΈ°ν™”ν•΄μ•Όν•œλ‹€. 

 

λ©€λ²„λ³€μˆ˜(클래슀 λ³€μˆ˜, μΈμŠ€ν„΄μŠ€ λ³€μˆ˜)와 λ°°μ—΄μ˜ μ΄ˆκΈ°ν™”λŠ” μ„ νƒμ μ΄μ§€λ§Œ,
μ§€μ—­λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™”λŠ” ν•„μˆ˜μ μ΄λ‹€!!!

 

- λ©€λ²„λ³€μˆ˜ μ΄ˆκΈ°ν™” 방법

1. λͺ…μ‹œμ  μ΄ˆκΈ°ν™”
2. μƒμ„±μž
3. μ΄ˆκΈ°ν™” λΈ”λŸ­
   - μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™” λΈ”λŸ­ : μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ΄ˆκΈ°ν™”ν•˜λŠ” 데 μ‚¬μš© 
   - 클래슀 μ΄ˆκΈ°ν™” λΈ”λŸ­: 클래슀 λ³€μˆ˜λ₯Ό μ΄ˆκΈ°ν™”ν•˜λŠ”λ° μ‚¬μš© 

 

- λͺ…μ‹œμ  μ΄ˆκΈ°ν™”

λ³€μˆ˜λ₯Ό μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”ν•˜λŠ” 것을 λͺ…μ‹œμ  μ΄ˆκΈ°ν™”λΌκ³  ν•œλ‹€. 

κ°€μž₯ κΈ°λ³Έμ μ΄λ©΄μ„œλ„ κ°„λ‹¨ν•œ μ΄ˆκΈ°ν™” 방법이닀. 

class Car {
	int door = 4; // κΈ°λ³Έν˜• λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™” 
    Engine e = new Engine(); // μ°Έμ‘°ν˜• λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™” 
}

 

λͺ…μ‹œμ  μ΄ˆκΈ°ν™”κ°€ κ°„λ‹¨ν•˜κ³  λͺ…λ£Œν•˜κΈ°λŠ” ν•˜μ§€λ§Œ 보닀 λ³΅μž‘ν•œ μ΄ˆκΈ°ν™” μž‘μ—…μ΄ ν•„μš”ν•œ κ²½μš°μ—λŠ” 'μ΄ˆκΈ°ν™” λΈ”λŸ­' λ˜λŠ” μƒμ„±μžλ₯Ό μ‚¬μš©ν•΄μ•Όν•œλ‹€.

 

- μ΄ˆκΈ°ν™” λΈ”λŸ­

μ΄ˆκΈ°ν™” λΈ”λŸ­μ—λŠ” 클래슀 μ΄ˆκΈ°ν™” λΈ”λŸ­κ³Ό μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™” λΈ”λŸ­ 두 가지 μ’…λ₯˜κ°€ μžˆλ‹€. 

클래슀 μ΄ˆκΈ°ν™” λΈ”λŸ­μ€ ν΄λž˜μŠ€λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™”μ— μ‚¬μš©λ˜κ³ , μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™” λΈ”λŸ­μ€ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™”μ— μ‚¬μš©λœλ‹€. 

 

μ΄ˆκΈ°ν™” λΈ”λŸ­μ„ μž‘μ„±ν•˜λ €λ©΄, μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™” λΈ”λŸ­μ€ λ‹¨μˆœνžˆ 클래슀 내에 λΈ”λŸ­{} μ„λ§Œλ“€κ³  κ·Έ μ•ˆμ— μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄ λœλ‹€.

그리고 클래슀 μ΄ˆκΈ°ν™” λΈ”λŸ­μ€ μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™” λΈ”λŸ­μ•žμ— λ‹¨μˆœνžˆ static 을 λ§λΆ™μ΄κΈ°λ§Œ ν•˜λ©΄ λœλ‹€.

 

클래슀 μ΄ˆκΈ°ν™” λΈ”λŸ­μ€ ν΄λž˜μŠ€κ°€ λ©”λͺ¨λ¦¬μ— 처음 λ‘œλ”©λ  λ•Œ ν•œλ²ˆλ§Œ μˆ˜ν–‰λ˜κ³ , μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™” λΈ”λŸ­μ€ μƒμ„±μžμ™€ 같이 μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ λ§ˆλ‹€ μˆ˜ν–‰λœλ‹€. 

그리고 μƒμ„±μžλ³΄λ‹€ μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™” λΈ”λŸ­μ΄ λ¨Όμ € μˆ˜ν–‰λœλ‹€!!!

 

 

- λ©€λ²„λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™” μ‹œκΈ°μ™€ μˆœμ„œ

ν΄λž˜μŠ€λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™” μ‹œμ  : ν΄λž˜μŠ€κ°€ 처음 λ‘œλ”©λ  λ•Œ 단 ν•œλ²ˆ μ΄ˆκΈ°ν™” λœλ‹€.
μΈμŠ€ν„΄μŠ€λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™”μ‹œμ  : μΈμŠ€ν„΄μŠ€κ°€ 생성될 λ•Œ λ§ˆλ‹€ 각 μΈμŠ€ν„΄μŠ€λ³„λ‘œ μ΄ˆκΈ°ν™”κ°€ 이루어진닀. 

ν΄λž˜μŠ€λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™” μˆœμ„œ : κΈ°λ³Έκ°’ -> λͺ…μ‹œμ  μ΄ˆκΈ°ν™” -> 클래슀 μ΄ˆκΈ°ν™” λΈ”λŸ­
μΈμŠ€ν„΄μŠ€λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™” μˆœμ„œ: κΈ°λ³Έκ°’ -> λͺ…μ‹œμ  μ΄ˆκΈ°ν™” -> μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™” λΈ”λŸ­ -> μƒμ„±μž 

-> μƒμ„±μžκ°€ ν•˜λ‚˜λ°–μ— μ—†κΈ° λ•Œλ¬Έμ— μΈμŠ€ν„΄μŠ€ λΈ”λŸ­ λŒ€μ‹ , Product 클래슀의 μƒμ„±μžλ₯Ό μ‚¬μš©ν•΄λ„ κ²°κ³ΌλŠ” κ°™μ§€λ§Œ, μ½”λ“œμ˜ μ˜λ―Έμƒ λͺ¨λ“  μƒμ„±μžμ—κ²Œ κ³΅ν†΅μœΌλ‘œ μˆ˜ν–‰λ˜μ–΄μ•Ό ν•˜λŠ” λ‚΄μš©μ΄κΈ° λ•Œλ¬Έμ— μΈμŠ€ν„΄μŠ€ λΈ”λŸ­μ„ μ‚¬μš©ν•˜μ˜€λ‹€. 

 

 

 

 

728x90