๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš— Major Study (Bachelor)/๐ŸŸ  JAVA Programming

JAVA ํ”„๋กœ๊ทธ๋ž˜๋ฐ 8.2

by UKHYUN22 2021. 10. 26.
728x90

8.2 Programming with Inheritance

 

Child ํด๋ž˜์Šค์˜ Constructor๋ฅผ ๋งŒ๋“ค ๋–„ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ 

Instance ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ฑ„์›Œ๋„ฃ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ผ ์ค‘ ํ•˜๋‚˜๋‹ค.

๋ถ€๋ชจ ํด๋ž˜์Šค์—๋„ ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ฑ„์›Œ๋„ฃ์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ด ์ž‘์—…์„ ํ•ด์ค€๋‹ค.

super(); ๋กœ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ Consturctor๋ฅผ ํ˜ธ์ถœํ•ด์„œ Instance ๋ณ€์ˆ˜๋ฅผ ์ฑ„์›Œ๋„ฃ๋Š”๋‹ค.

super๋ผ๋Š” ๊ฒƒ์€ ๋จผ์ €!! ์ด๋ค„์ ธ์•ผ ํ•œ๋‹ค.

 

 

 

๋ถ€๋ชจ ํด๋ž˜์Šค์— Default Constructor๊ฐ€ ์กด์žฌํ•  ๋•Œ super()๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

Constructor๊ฐ€ ๋˜ ๋‹ค๋ฅธ Constructor๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

this๊ฐ€ ๋ถ™์œผ๋ฉด ๊ฐ™์€ ํด๋ž˜์Šค ์•ˆ์— ์žˆ๋Š” Constructor๋ฅผ ์ง€๋ชฉํ•˜๊ฒŒ ๋œ๋‹ค.

 

this ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์‹œ

 

 

 

writeOuput ์„ ์ž‘์„ฑํ•  ๋•Œ super. ์„ ๋ถ™์—ฌ์„œ ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์„ ์–ธ๋œ writeOutput ๋งค์†Œ๋“œ๋ฅผ ๋ถ€๋ฅธ๋‹ค.

 

 

equals๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ๋ง์”€ํ•˜์…จ๋‹ค.

Undergraduate ํด๋ž˜์Šค์—์„œ equals๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ๋‚˜๋„ Undergraduate ๋„ˆ๋„ Undergraduate.

๋‚ด Under.. ์˜ค๋ธŒ์ ํŠธ์™€ ๋„ˆ Under.. ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๊ฐ™์€์ง€ ๋น„๊ต๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ equals ๋ฉ”์†Œ๋“œ์˜ parameter Type์€ ๋‹น์—ฐํžˆ Undergraduate ์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ (Student) ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜์„ ํ•ด์ฃผ๊ณ  equals๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ์•ˆ์˜ ์ฒซ ๋ฒˆ์งธ equals๋Š” 

ํ•ด๋‹น equals๋ฅผ ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ˜น์‹œ ๋‹ค๋ฅธ equals ์ค‘์— parameter๊ฐ€ Student์ธ 

equals๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๊ฒƒ์„ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

์ฆ‰, Student ํด๋ž˜์Šค์˜ Instance๋ฅผ ๋น„๊ตํ•œ ๋‹ค์Œ์— level์„ ๋น„๊ตํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋œ๋‹ค.

 

 

super.super ์ฆ‰ ๋‘ ๋ฒˆ ์ด์ƒ์˜ ์‚ฌ์šฉ์€ ๋ชปํ•œ๋‹ค.

 

 

 

Derived Class์˜ Type์€ ํ•œ ๊ฐœ ์ด์ƒ์ผ ์ˆ˜ ์žˆ๋‹ค.

boss๋ผ๋Š” Object๋Š” Person ํƒ€์ž…์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š”๋ฐ Person์˜ ์ž๋…€์ธ Employee ํƒ€์ž…์ด ์˜ค๋ฉด??

"Employee ๋Š” Person Type ์ด๋‹ค" ์˜ ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•˜๋ฏ€๋กœ ๊ฐ€๋Šฅํ•œ ๋ฌธ๋ฒ•์ด ๋œ๋‹ค.

Employee ํƒ€์ž…์€ Employee ํƒ€์ž…์ด๊ธฐ๋„ ํ•˜๋ฉด์„œ Person ํƒ€์ž…์ด๊ธฐ๋„ ํ•˜๋‹ค.

"is a relation"

 

 

Joseph ์€ Person ํƒ€์ž…์ด์—ฌ์„œ Person ํƒ€์ž…์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š”๋ฐ

ํ• ๋‹น๋˜๋Š” ๊ฒƒ์ด boss๋กœ Employee ํƒ€์ž…์ด๋‹ค. ๊ฐ€๋Šฅํ•œ๊ฐ€?>>

๊ฐ€๋Šฅํ•˜๋‹ค!!!!!!!

boss๋Š” Employee ํƒ€์ž…์ด์—ฌ์„œ Employee ํƒ€์ž…์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š”๋ฐ

ํ• ๋‹น๋˜๋Š” ๊ฒƒ์ด joseph์œผ๋กœ Person ํƒ€์ž…์ด๋‹ค. ๊ฐ€๋Šฅํ•œ๊ฐ€??

๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

 

An "Eve" Class

 

Object Class๋ผ๋Š” ๊ฒƒ์€ ๋ชจ๋“  ํด๋ž˜์Šค์˜ ์œ„์— ์žˆ๋Š” Base Class์ด๋‹ค.

Object ํด๋ž˜์Šค ์•ˆ์— ์ด๋ฏธ equals, toString, clone์ด ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.

 

 

toString์ด ์ƒ๋žต๋˜์–ด ๋˜‘๊ฐ™์ด ์ถœ๋ ฅ๋œ๋‹ค.

์ด๋Ÿฐ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ์œ„ํ•ด์„œ toString์ด ๋ชจ๋“  ํด๋ž˜์Šค์— ์„ ์–ธ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

studentPar.equals๋ฅผ ํ•˜๊ณ  ์•ˆ์— ์žˆ๋Š” ๊ฒƒ์ด object ํด๋ž˜์Šค๋ผ๋ฉด ํ•ด๋‹น Type์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์„ ์ฐพ์œผ๋Ÿฌ

์ญ‰ ์˜ฌ๋ผ๊ฐ”๋‹ค๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ํ•ด๋‹น๋˜๋Š” ๊ณณ์˜ equals๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๊ฑฐ์˜ ๋ฐœ์ƒํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ์–ด๋–ค ํ•ด๊ฒฐ์ฑ…์„ ํ•˜๋ƒ!!

 

๋ชจ๋“  ํด๋ž˜์Šค์˜ equals๋ฅผ Object ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค์–ด ๋†“์œผ๋ฉด ํ•ด๊ฒฐ์ด ๋  ๊ฒƒ์ด๋‹ค. (Overriding)

์œ„ ์‚ฌ์ง„์˜ ๊ฒฝ์šฐ Overload์— ํ•ด๋‹นํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด signature๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํƒ€์ž…์ด ๋‹ค๋ฅด๋‹ค๋Š” ์–˜๊ธฐ!!!!

 

์ด์ฒ˜๋Ÿผ equals์˜ Type์„ Object๋กœ ํ•  ๊ฒฝ์šฐ Overriding์ด ๋œ๋‹ค.

otherObject๊ฐ€ Student์˜ Instance์ด๋ƒ๋ฅผ ๋จผ์ € ํ™•์ธ์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.