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

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

by UKHYUN22 2021. 10. 26.
728x90

8.1 Inheritance Basics

 

 

Principles of Abstraction, Code reuse

 

์™œ ๊ฐ์ฒด ์ง€ํ–ฅ์ธ๊ฐ€?

๋ณต์žกํ•œ ํ”„๋กœ๊ทธ๋žจ ๋‹ค๋ฃจ๋Š”๋ฐ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

Abstraction ๊ฐœ๋…์„ ํ™œ์šฉํ•ด์„œ ๋ณต์žกํ•œ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋Š”๋ฐ Simpleํ•˜๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋…์ด ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ

Reusability, ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ์— ์ข‹๋‹ค.

 

 

the base of parent class, derived or child classes

 

Inheritance๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” General ํ•œ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋†“๊ณ 

Specialized ๋œ ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ์ƒ์†์˜ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•œ๋‹ค.

General Class๋ฅผ Parent Class ๋ผ๊ณ  ํ•˜๊ณ  

Specialized Class๋ฅผ Child Class ๋ผ๊ณ  ํ•œ๋‹ค. (Derived Class ๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•จ)

 

 

extends

 

Child Class ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

 

 

์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค์—๋„ Instance ๋ณ€์ˆ˜๊ฐ€ ์กด์žฌํ•˜๊ณ  ์ƒ์† ๋ฐ›์€ ์ž๋…€ ํด๋ž˜์Šค์—๋„ Instance ๋ณ€์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์ž๋…€ ํด๋ž˜์Šค์—์„œ Constructor๋กœ Initialize ํ•ด์ค„ ๋•Œ super()๋กœ ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ์ดˆ๊ธฐํ™” ์‹œ์ผœ์ค€๋‹ค.

 

 

 

writeOutput์€ ์ง์ ‘ Println์„ ๊ฐ€์ง€๊ณ  ์ถœ๋ ฅ์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๊ณ 

toString์€ String์„ return value๋กœ ํ•ด์„œ ์ถœ๋ ฅ์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

writeOutput, equals, toString ๋งค์†Œ๋“œ๋ฅผ ์–ด๋Š ํด๋ž˜์Šค์ด๋“  ์„ ์–ธ์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹์€ ์Šต๊ด€์ด๋‹ค.

 

 

 

Child ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ๋ณธ์ธ์ด ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ Instance ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ž๋…€ ํด๋ž˜์Šค์—์„œ ๋งค์†Œ๋“œ์˜ ์ด๋ฆ„๊ณผ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋งค์†Œ๋“œ์™€ ์ด๋ฆ„์ด ๋™์ผํ•œ ๊ฒฝ์šฐ

 

 

same, different, same

 

Overriding์€ Signature๊ฐ€ ๊ฐ™๊ณ  ํ•˜๋‚˜๋Š” ๋ถ€๋ชจ์— ํ•˜๋‚˜๋Š” ์ž๋…€์— ์žˆ๋‹ค.

Overload๋Š” ์ด๋ฆ„์€ ๊ฐ™์ง€๋งŒ Signature๊ฐ€ ๋‹ค๋ฅด๊ณ  ๊ฐ™์€ ํด๋ž˜์Šค ์•ˆ์— ์žˆ๋‹ค.

 

cannot be overridden

 

final์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ Method ์•ˆ์— ๋ถ™์œผ๋ฉด Override๋ฅผ ํ•  ์ˆ˜ ์—†๋‹ค.

ํด๋ž˜์Šค ์ „์ฒด๊ฐ€ final ์„ ์–ธ ๋˜๋ฉด ์ด ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง€๊ณ  Child Class๋ฅผ ๋ชป ๋งŒ๋“ ๋‹ค.

 

 

Parent ํด๋ž˜์Šค์˜ Instance ๋ณ€์ˆ˜๋ฅผ private๋กœ ๋งŒ๋“ค์–ด ๋†“์œผ๋ฉด Child ํด๋ž˜์Šค๊ฐ€ ์ด ๋ณ€์ˆ˜์— 

์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.(๋ถ€๋ชจ์˜ ๊ธˆ๊ณ ๋ฅผ ๋ณด์ง€ ๋ง๋ผ)

๋ฐ˜๋“œ์‹œ public Method๋ฅผ ๊ฐ€์ง€๊ณ  ์ ‘๊ทผ์„ ํ•ด๋ผ

Information Hiding ๊ฐœ๋…์ด ์—ฌ์ „ํžˆ ์กด์žฌํ•œ๋‹ค.

 

 

Inheritance ๊ฐœ๋…์˜ UML Diagram

"is a relationship"

์ž๋…€ ํด๋ž˜์Šค ๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์ด๋‹ค ์ฒ˜๋Ÿผ ์ฝ์œผ๋ฉด ๋œ๋‹ค.