JAVA(8)-์ƒ์†

Wooney98ยท2022๋…„ 11์›” 11์ผ
3

JAVA

๋ชฉ๋ก ๋ณด๊ธฐ
8/8
post-thumbnail

์ƒ์†

์ƒ์†์ด๋ž€?

  • ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ๋งŒ๋“ค์–ด์ง„ ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ๋ฌผ๋ ค๋ฐ›๋Š” ๊ฒƒ. ์ƒ์†์˜ ์„ ์–ธ์€ extend ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค
public class person{}
public class Student extends Person{}

์žฅ์  : ๊ฐ™์€ ์†์„ฑ์˜ ์ˆ˜์ •์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ถ€๋ชจ ํด๋ž˜์Šค๋งŒ ์ˆ˜์ •ํ•˜๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํด๋ž˜์Šค๋ฅผ ๋ชจ๋‘ ์ˆ˜์ •ํ•  ํ•„์š”๊ฐ€ ์—†์–ด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฝ๋‹ค.
--> ์ฝ”๋“œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์—ฌ ํด๋ž˜์Šค๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๊ตฌํ˜„ํ•œ๋‹ค.

  • ์ƒ์†์˜ ํŠน์ง•
  1. ํด๋ž˜์Šค ๊ฐ„๊ฒฐํ™” - ๋ฉค๋ฒ„ ์ค‘๋ณต์ž‘์„ฑ ๋ถˆํ•„์š”

  2. ํด๋ž˜์Šค ๊ด€๋ฆฌ ์šฉ์ด - ํด๋ž˜์Šค์˜ ๊ณ„์ธต์  ๋ถ„๋ฅ˜

  3. ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ - ํด๋ž˜์Šค ์žฌ์‚ฌ์šฉ, ํ™•์žฅ์ด ์‰ฌ์›€

  4. ์ž๋ฐ”์—์„œ๋Š” ํด๋ž˜์Šค ๋‹ค์ค‘ ์ƒ์†(multiple ingeritance)๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

    • ๋‹ค์ค‘์ƒ์†์€ ๋ถ€๋ชจ ํด๋ž˜์Šค๋“ค์ด ๊ฐ™์€ ์ด๋ฆ„์˜ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง„ ๊ฒฝ์šฐ ๋ชจํ˜ธ์„ฑ์œผ๋กœ ๋ฌธ์ œ ์œ ๋ฐœ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ์ž๋ฐ”๋Š” ์ด๋ฅผ ์›์ฒœ๋ด‰์‡„.
    • ์ด๋Š” ๋‹คํ˜•์„ฑ์„ ์˜๋ฏธํ•œ๋‹ค. ๋ถ€๋ชจ-์ž์‹ ์ƒ์† ๊ด€๊ณ„์—์žˆ๋Š” ํด๋ž˜์Šค์—์„œ ์ƒ์œ„ ํด๋ž˜์Šค๊ฐ€ ๋™์ผํ•œ ๋ฉ”์‹œ์ง€๋กœ ํ•˜์œ„ ํด๋ž˜์Šค๋“ค์„ ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘์‹œํ‚ค๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ์ด๋‹ค.
  5. ์ƒ์†์˜ ํšŸ์ˆ˜์— ์ œํ•œ์ด ์—†๋‹ค.

  6. ๊ณ„์ธต ๊ตฌ์กฐ์˜ ์ตœ์ƒ์œ„์— java.lang.Object ํด๋ž˜์Šค๊ฐ€ ์žˆ์–ด์„œ ์ž๋™์œผ๋กœ ์ƒ์†๋ฐ›๋„๋ก ์ปดํŒŒ์ผ๋œ๋‹ค.

    • Object ํด๋ž˜์Šค๋งŒ์ด ์œ ์ผํ•˜๊ฒŒ ์Šˆํผํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค.
  7. ์ƒ์†์€ ๋™์  ๋ฐ”์ธ๋”ฉ์ด๋‹ค. ๋™์  ๋ฐ”์ธ๋”ฉ์€ Overriding์„ ์˜๋ฏธํ•œ๋‹ค.

๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(Method Overriding)์ด๋ž€?

  • ์Šˆํผํด๋ž˜์Šค์—์„œ ์„ ์–ธ๋œ ๋ฉ”์†Œ๋“œ์™€ ๊ฐ™์€ ์ด๋ฆ„, ๊ฐ™์€ ๋ฆฌํ„ด ํƒ€์ž…, ๊ฐ™์€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ–๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์„œ๋ธŒ ํด๋ž˜์Šค์—์„œ ์žฌ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ์Šˆํผํด๋ž˜์Šค์— ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋กœ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ•  ๋•Œ ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์„œ๋ธŒํด๋ž˜์Šค์—์„œ ๋‹ค์‹œ ์ž‘์„ฑ.

  • ์‹คํ–‰ ์—ญ์‹œ ์„œ๋ธŒํด๋ž˜์Šค ๋‚ด์˜ ๋ฉ”์†Œ๋“œ๋งŒ ์‹คํ–‰๋œ๋‹ค.

  • ๋ถ€๋ชจ์˜ ๋ฉค๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด super. ๋ฉค๋ฒ„๋ช…์„ ์‚ฌ์šฉํ•˜๋ฉด ๋จ

    ์Šˆํผํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ๋ฅผ ๋ฌด์‹œ, ํ˜น์€ ๋ฎ์–ด์“ฐ๊ธฐ๋ผ๊ณ  ํ•˜๋ฉฐ ๋™์ ๋ฐ”์ธ๋”ฉ์ด๋ผ๊ณ  ํ•œ๋‹ค.

  • ์˜ค๋ฒ„๋ผ์ด๋”ฉ์˜ ๋ชฉ์  : ๋‹คํ˜•์„ฑ ์‹คํ˜„

  • ์˜ค๋ฒ„๋ผ์ด๋”ฉ ์ œ์•ฝ ์กฐ๊ฑด : ์Šˆํผํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ์™€ ๋™์ผํ•œ ์›ํ˜•์œผ๋กœ ์ž‘์„ฑ (๋™์ผ ์ด๋ฆ„, ๋™์ผ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…, ๋™์ผ ๊ฐœ์ˆ˜, ๋™์ผํ•œ ๋ฆฌํ„ดํƒ€์ž…์˜ ๋ฉ”์†Œ๋“œ)

  • ์Šˆํผํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ์˜ ์ ‘๊ทผ ์ง€์ •์ž๋ณด๋‹ค ์ ‘๊ทผ์˜ ๋ฒ”์œ„๋ฅผ ์ขํ˜€ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋ถˆ๊ฐ€ (ํ‚ค์šฐ๋Š” ๊ฑด ๊ฐ€๋Šฅ)

  • static, private, final ๋ฉ”์†Œ๋“œ๋Š” ์„œ๋ธŒํด๋ž˜์Šค์—์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•  ์ˆ˜ ์—†๋‹ค.

์บ์ŠคํŒ…(casting)

์—… ์บ์ŠคํŒ…

  • ์—… ์บ์ŠคํŒ…์€ ์Šˆํผํด๋ž˜์Šค์˜ ๋ž˜ํผ๋Ÿฐ์Šค๋กœ ์„œ๋ธŒ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•œ๋‹ค. ์„œ๋ธŒ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์Šˆํผ ํด๋ž˜์Šค ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ.
Parent p;
Child c = new Child(); 
p = c; //์—…์บ์ŠคํŒ…

Parent p = new Child(); //์—…์บ์ŠคํŒ…
  • Child์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ด Child์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์ด๋ฅผ Parentํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
  • ์ฆ‰, ํ•˜์œ„ ํด๋ž˜์Šค์˜ ์ •๋ณด๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด์— ์ƒ์œ„ ํด๋ž˜์Šค์˜ ์ž๋ฃŒํ˜•์„ ๋ถ€์—ฌํ•ด ์ƒ์œ„ ํด๋ž˜์Šค์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋‹ค์šด ์บ์ŠคํŒ…

  • ์—…์บ์ŠคํŒ… ๋˜์—ˆ๋˜ ๊ฐ์ฒด์˜ ์ž๋ฃŒํ˜•์„ ๋‹ค์‹œ ํ•˜์œ„ ํด๋ž˜์Šค์˜ ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๊ธฐ๋Šฅ์„ ํ•˜๋„๋ก ์ž๋ฃŒํ˜•์„ ์„œ๋ธŒ ํด๋ž˜์Šค๋กœ ๋ฐ”๊พธ์–ด ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ์„ ๋งํ•จ.
  • ํƒ€์ž… ๋ณ€ํ™˜์„ ๋ช…์‹œ์  ์ง€์ •ํ•ด์•ผํ•œ๋‹ค.
  • ๋‹ค์šด ์บ์ŠคํŒ…์„ ํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ์—… ์บ์ŠคํŒ…์ด ์„ ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค.
Child c = (Child)p; //downcasting, (student)์˜ ํƒ€์ž… ๋ณ€ํ™˜์„ ๋ฐ˜๋“œ์‹œ ํ‘œ์‹œํ•ด์•ผ ๋จ

instance of ์—ฐ์‚ฐ์ž

  • ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ์—… ์บ์ŠคํŒ…๋˜์–ด ๋„˜์–ด์˜ค๋Š”์ง€ ๊ตฌ๋ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•.
  • ์ดํ•ญ ์—ฐ์‚ฐ์ž์ด๋ฉฐ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๊ฐ€ ํ•ด๋‹น ํด๋ž˜์Šค ํƒ€์ž…์˜ ๊ฐ์ฒด์ด๋ฉด true, ์•„๋‹ˆ๋ฉด false๋กœ ๊ณ„์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๊ฐ’์€ boolean ๊ฐ’์ด๋‹ค.
Person jee = new Student();
Person kii = new Professor();
if (jee instanceof Person) //true
if (jee instanceof Student) //true
if (kii instanceof Student) //false

// if(3 instanceof int) ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค๋งŒ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜.
if ("java" instanceof String) //true
profile
๐Ÿ‘จEducation Computer Engineering ๐ŸŽ“Expected Graduation: February 2023 ๐Ÿ“žContact info thstjddn77@gmail.com

0๊ฐœ์˜ ๋Œ“๊ธ€