๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
1. Java ์ž๋ฐ”/1_0. ์ฑ…, ๊ฐ•์˜

[์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ1] 14์ฃผ์ฐจ ๊ฐ•์˜_ํ•„๊ธฐ

by ๋น„์†Œ์•ผ 2022. 5. 18.
728x90

์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ1 14์ฃผ์ฐจ ๊ฐ•์˜_ํ•„๊ธฐ

1์ฐจ์‹œ

 

๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ // ๋ถ€๋ชจ ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์žฌ์ •์˜ ํ•˜๋Š” ๊ฒƒ, ๋ฉ”์†Œ๋“œ ๋ฎ์–ด์“ฐ๊ธฐ๋ผ๊ณ ๋„ ํ•จ
๋ถ€๋ชจ ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„, ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž… ๋ฐ ๊ฐœ์ˆ˜, ๋ฆฌํ„ด ํƒ€์ž… ๋“ฑ ๋ฉ”์†Œ๋“œ ์„ ์–ธ๋ถ€(๋ฉ”์†Œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜)๋Š” ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ์ž‘์„ฑ // ์˜ค๋ฒ„๋กœ๋”ฉ์€ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด๋‚˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ ๋ฉ”์†Œ๋“œ ๊ตฌ๋ถ„ ๊ฐ€๋Šฅ
๋™์  ๋ฐ”์ธ๋”ฉ ๋ฐœ์ƒ // ์ž์‹ ํด๋ž˜์Šค์— ์˜ค๋ฒ„๋ผ์ด๋”ฉ๋œ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฌด์กฐ๊ฑด ์‹คํ–‰
(1) ์ž์‹ ํด๋ž˜์Šค ๋ ˆํผ๋Ÿฐ์Šค๋กœ ์˜ค๋ฒ„๋ผ์ด๋”ฉ๋œ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ
(2) ์—…์บ์ŠคํŒ…๋œ ๋ถ€๋ชจ ํด๋ž˜์Šค ๋ ˆํผ๋Ÿฐ์Šค๋กœ ์˜ค๋ฒ„๋ผ์ด๋”ฉ๋œ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ // == ๋™์  ๋ฐ”์ธ๋”ฉ

๋ฐ”์ธ๋”ฉ // ๊ฒฐํ•ฉ
๋‹คํ˜•์„ฑ // ๊ฐ™์€ ์ด๋ฆ„์— ์„œ๋กœ ๋‹ค๋ฅธ ๋‚ด์šฉ์„ ๊ตฌํ˜„
์˜ค๋ฒ„๋ผ์ด๋”ฉ์€ ์‹คํ–‰์‹œ๊ฐ„์— ๋‹คํ˜•์„ฑ ์‹คํ˜„ // ๋™์  ๋ฐ”์ธ๋”ฉ, ์–ด๋–ค ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ผ ๋•Œ ์‹คํ–‰๋˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. ์ƒ์† ๊ด€๊ณ„
์˜ค๋ฒ„๋กœ๋”ฉ์€ ์ปดํŒŒ์ผ์‹œ๊ฐ„์— ๋‹คํ˜•์„ฑ ์‹คํ˜„ // ์ •์  ๋ฐ”์ธ๋”ฉ, ๋™์ผ ํด๋ž˜์Šค ๋˜๋Š” ์ƒ์† ๊ด€๊ณ„

2์ฐจ์‹œ

 

์‚ฌ๋žŒ์€ ์ƒ๋ฌผ์ด๋‹ค. // Is a, ์ƒ์† ๊ด€๊ณ„
์ž๋™์ฐจ๋Š” ๋ฐ”ํ€ด๋ฅผ ๊ฐ–๋Š”๋‹ค. // Has a, ํด๋ž˜์Šค ๋‚ด ๋‹ค๋ฅธ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํฌํ•จ๋œ ๊ด€๊ณ„

@Overide // ์ƒ์œ„ ํด๋ž˜์Šค์— ์˜ค๋ฒ„๋ผ์ด๋”ฉ๋  ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ๋Š”์ง€ ์ฐพ์•„๋ณด๊ณ  ์—†์œผ๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ๋ฅผ ์ผ์œผํ‚จ๋‹ค.

super ํ‚ค์›Œ๋“œ // ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋ฅผ ์ ‘๊ทผํ•˜๊ธฐ์œ„ํ•œ ํ‚ค์›Œ๋“œ, ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๊ฐ™์€ ์ด๋ฆ„์˜ ํ•„๋“œ ๋˜๋Š” ์˜ค๋ฒ„๋ผ์ด๋”ฉ๋œ ๋ฉ”์†Œ๋“œ ์ ‘๊ทผ ๊ฐ€๋Šฅ

์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋  ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ๋Š” ๊ตฌํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
๋ฐฉ๋ฒ•1 pubilc String getName() {} // ์ •์˜๋ฅผ ๋น„์›Œ๋‘”๋‹ค. ์ด๋Ÿฌ๋ฉด ์•„์ง ๊ฐœ๋ฐœ์ค‘์ด๋ผ๊ณ  ํ˜‘์—…์‹œ ์˜คํ•ด๋ฅผ ๋ถˆ๋Ÿฌ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
๋ฐฉ๋ฒ•2 public abstract String getName(); // ์ •์˜๋ถ€์ธ {} ๋ฐ”๋”” ์—†์Œ ์ฃผ์˜

์ถ”์ƒ ๋ฉ”์†Œ๋“œ // abstract ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ, ์„œ๋ธŒ ํด๋ž˜์Šค์—์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์—ฌ์•ผ ํ•จ

์ถ”์ƒ ํด๋ž˜์Šค // public abstract class Person {}
// ๋ฐ˜๋“œ์‹œ ์ƒ์†๋˜์–ด์•ผ ํ•œ๋‹ค. ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค.
1. ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ๋Š” ์ถ”์ƒ ํด๋ž˜์Šค // ์ƒ์†ํ•˜์—ฌ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ๊ตฌํ˜„ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ทธ ํด๋ž˜์Šค๋„ ์ถ”์ƒ ํด๋ž˜์Šค๊ฐ€ ๋œ๋‹ค.
2. ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋Š” ์—†์ง€๋งŒ ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ์„ ์–ธ๋œ ํด๋ž˜์Šค 

final ํด๋ž˜์Šค๋Š” ๋” ์ด์ƒ ์ƒ์†ํ•  ์ˆ˜ ์—†๋‹ค. // ์ถ”์ƒ ํด๋ž˜์Šค์™€ ๋ฐ˜๋Œ€

 

3์ฐจ์‹œ

 

์ถ”์ƒํด๋ž˜์Šค // ์„ค๊ณ„ํ•  ๋•Œ ์‚ฌ์šฉ -> ์„ค๊ณ„์™€ ๊ตฌํ˜„์„ ๋ถ„๋ฆฌํ•˜๊ธฐ์œ„ํ•ด

์ธํ„ฐํŽ˜์ด์Šค // public interface Phone {}
7๊นŒ์ง€ // ์ƒ์ˆ˜์™€ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋กœ๋งŒ ๊ตฌ์„ฑ
8๋ถ€ํ„ฐ // 8 default ๋ฉ”์†Œ๋“œ, 9 private, static ๋ฉ”์†Œ๋“œ
์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ•„๋“œ ์„ ์–ธ ๋ถˆ๊ฐ€, ๊ฐ์ฒด ์ƒ์„ฑ ๋ถˆ๊ฐ€ // ๋ ˆํผ๋Ÿฐ์Šค ์„ ์–ธ์€ ๊ฐ€๋Šฅ

์ƒ์ˆ˜ public static final // ์ƒ๋žต ๊ฐ€๋Šฅ
์ถ”์ƒ ๋ฉ”์†Œ๋“œ public abstract // ์ƒ๋žต ๊ฐ€๋Šฅ

ํด๋ž˜์Šค์— ๊ตฌํ˜„ ํ•„์š” // ํด๋ž˜์Šค ์ด๋ฆ„ implements ์ธํ„ฐํŽ˜์ด์Šค ์ด๋ฆ„
๊ตฌํ˜„ ์‹œ ๋ชจ๋“  ์ถ”์ƒ ๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜์—ฌ ๊ตฌํ˜„ ํ•„์š”

๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์† ๊ฐ€๋Šฅ, ๋‹ค์ค‘ ์ƒ์† ๊ฐ€๋Šฅ, ๋‹ค์ค‘ ๊ตฌํ˜„ ๊ฐ€๋Šฅ

728x90