๋ฐ˜์‘ํ˜•
JuneBee
JuneBee
JuneBee
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (102)
    • ๐Ÿ‘” JOB (10)
      • ์ „ํ˜• ํ›„๊ธฐ (10)
    • ๐ŸŽฎ GAME (9)
      • ์ ค๋‹ค | ์™•๊ตญ์˜ ๋ˆˆ๋ฌผ ๊ฒŒ์ž„ ์ผ๊ธฐ (9)
    • ๐Ÿ““ STUDY (60)
      • JAVA (15)
      • TIL (2)
      • FASTCAMPUS (32)
      • ํ™˜๊ฒฝ์„ค์ • (2)
      • YOCTO (1)
      • OS (4)
      • ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ ์ธ ์•ก์…˜ (2)
    • ๐ŸŽงDAILY (6)
    • ๐Ÿ‡ฉ๐Ÿ‡ช GERMAN (17)
      • ๋Œ€ํ•™์› ์ง€์› (3)
      • ์ง€์› ํ›„๊ธฐ (11)
      • ๋…์ผ์–ด ์‹œํ—˜ (3)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ์ผ์ƒ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์„์‚ฌ
  • ์™•๊ตญ์˜๋ˆˆ๋ฌผ
  • ์œ ํ•™
  • ์ทจ์—…์ค€๋น„
  • ๋ฐฑํŠธ๋ž˜ํ‚น
  • telc
  • ํ•œ๋ฒˆ์—๋๋‚ด๋Š”์ฝ”๋”ฉํ…Œ์ŠคํŠธ369JavaํŽธ์ดˆ๊ฒฉ์ฐจํŒจํ‚ค์ง€Online.
  • ์‹ธํ”ผ
  • C/C++
  • ํŒจ์บ ์ฑŒ๋ฆฐ์ง€
  • ์ •๋ ฌ
  • ํฌ๋ฃจ์Šค์นผ
  • ํ”Œ๋ ˆ์ด์ผ๊ธฐ
  • ํŒจ์ŠคํŠธ์บ ํผ์Šค
  • ์™•๋ˆˆ
  • ๋ชจํ—˜์ผ๊ธฐ
  • bruteforce
  • sort
  • ์ง์žฅ์ธ์ž๊ธฐ๊ณ„๋ฐœ
  • ๋…์ผ์–ด
  • ์ง์žฅ์ธ์ธ๊ฐ•
  • ๋…์ผ์œ ํ•™
  • ๋…์ผ
  • SSAFY
  • ์ ค๋‹ค
  • B1
  • Java
  • ์ž๋ฃŒ๊ตฌ์กฐ
  • ๊ฒŒ์ž„์ผ๊ธฐ
  • ํŒจ์ŠคํŠธ์บ ํผ์Šคํ›„๊ธฐ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
JuneBee

JuneBee

์ƒ์†
๐Ÿ““ STUDY/JAVA

์ƒ์†

2022. 5. 17. 23:11
728x90
๋ฐ˜์‘ํ˜•

Inheritance (์ƒ์†)

๐Ÿคฆ๐Ÿป‍โ™€๏ธ ์ƒ์†์˜ ๊ด€๊ณ„๋Š” is - a ๊ด€๊ณ„์ด๋‹ค

<1> ์ •์˜

์ƒ์†์€ ๊ธฐ์กด ํด๋ž˜์Šค์˜ ์ž์‚ฐ (๋งด๋ฒ„)๋ฅผ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์žฌ์‚ฌ์šฉ ํ•˜๊ธฐ ์œ„ํ•ด ์“ฐ์ธ๋‹ค. ํ˜„์‹ค์—์„œ์™€๋Š” ๋ฐ˜๋Œ€๋กœ, ๋ถ€๋ชจ๊ฐ€ ์ž์‹์—๊ฒŒ ์ƒ์†์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ž์‹์ด ๋ถ€๋ชจ๋‹˜ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๋Š”๊ฒƒ์ด๋‹ค (๋ถˆํšจ์ž์‹)

๊ธฐ์กด ํด๋ž˜์Šค์˜ ๋งด๋ฒ„๋ฅผ ๋ฌผ๋ ค๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ๊ณ  ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ํŽธ๋ฆฌํ•˜๋‹ค

ํ‚ค์›Œ๋“œ : extends

public class ๋ถ•์–ด๋นตํ‹€ {
	String product_name;
	String fillings;
	int age ; //unit - min
	
	void coolDown();
	void eaten ();
}
public class ๋ถ•์–ด๋นต extends ๋ถ•์–ด๋นตํ‹€{
boolean isCarp ; 
void curse() {}
}

๐Ÿงธ์ƒ์†์„ ํ•  ๋•Œ, ๋ถ€๋ชจ์˜ ์ƒ์„ฑ์ž์™€ ์ดˆ๊ธฐํ™” ๋ธ”๋ก์€ ์ƒ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค !

์‹ค์Šต

๋ถ•์–ด๋นต ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” ๋ถ•์–ด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค. ๋ถ•์–ด์ธ๋ฐ ๋ถ•์–ด๋นต์„ ์ƒ์†๋ฐ›์œผ๋ฉด, ์–ต์šธํ•œ ๋ถ•์–ด๊ฐ€ ์ €์ฃผํ• ๊ฒƒ์ด๋‹ค.

public class ๋ถ•์–ด๋นต{

	//์†์„ฑ
	String product_name, fillings;
	int age;

	//๊ฐ€๋Šฅ
	void coolDown(){
  System.out.println("์‹์–ด๋ฒ„๋ ธ๋‹ค...");
 }
	void eaten() { 
  System.out.println("์‚ด๋ ค์ค˜...");
 } 

}
public class ๋ถ•์–ด extends ๋ถ•์–ด๋นต{
/*๊ณ ์œ  ์†์„ฑ, ๊ธฐ๋Šฅ์„ ์ •์˜*/

//์†์„ฑ
boolean isCarp;

//๊ธฐ๋Šฅ
void curse{
	String cursed= isCarp==true? 
  "์ €์ฃผํ• ๊ฑฐ์•ผ ์ธ๊ฐ„.." : "๋”ฐ๋ˆ๋”ฐ๋ˆ";
	System.out.println(cursed);
}

}
public class ๋ถ•์–ด๋นต๋งŒ๋“ค๊ธฐ{
public static void main(String[] args){
//๋ถ•์–ด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž
๋ถ•์–ด ๊ธˆ๋ถ•์–ด = new ๋ถ•์–ด();
๋ถ•์–ด ํŒฅ = new ๋ถ•์–ด ();

//๋ถ•์–ดํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ๊ณผ ์†์„ฑ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
๊ธˆ๋ถ•์–ด.isCarp = true;
ํŒฅ.isCarp = false;

/*๋ถ•์–ด ํด๋ž˜์Šค์—๋Š” ๋‚˜์ด ์ƒ์„ฑ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋ถ•์–ด๋นต์—์žˆ๋Š” age, fillings, name์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค*/
๊ธˆ๋ถ•์–ด.age = 15, ํŒฅ.age = 1;
๊ธˆ๋ถ•์–ด.productName = "๋ถ•์–ด๊ฐ€ ์žˆ๋Š” ๋ถ•์–ด๋นต", ํŒฅ.productName="๋ถ•์–ด ์—†๋Š” ๋ถ•์–ด๋นต";
๊ธˆ๋ถ•์–ด.fillings = "๋ถ•์–ด๊ฐ€ ๋“ค์–ด์žˆ์–ด์šฉ" ,ํŒฅ.fillings = "ํŒฅ์ด ๋“ค์–ด์žˆ์–ด์šฉ";

๊ธˆ๋ถ•์–ด.curse(); //"์ €์ฃผํ• ๊ฑฐ์•ผ ์ธ๊ฐ„..." ์„ ์ถœ๋ ฅํ•œ๋‹ค
ํŒฅ.curse();     //"๋”ฐ๋ˆ๋”ฐ๋ˆ" ์„ ์ถœ๋ ฅํ•œ๋‹ค
๊ธˆ๋ถ•์–ด.carp();  // ๋ถ•์–ด๋นต ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ๋„ ์“ธ ์ˆ˜ ์žˆ๋‹ค  
}
}

์œ„์˜ ์ฝ”๋“œ์˜ ์ƒ์† ๊ด€๊ณ„๋ฅผ ์‚ดํŽด๋ณด์ž.

 

์ƒ์†์˜ ๊ด€๊ณ„๋Š” is a ๊ด€๊ณ„๋ผ๊ณ  ํ•œ๋‹ค

๐ŸŸ๊ธˆ๋ถ•์–ด is a ๋ถ•์–ด๋นต

๐ŸŸํŒฅ๋ถ•์–ด๋นต is a ๋ถ•์–ด๋นต

๐ŸŸ๋ถ•์–ด๋นต is an Object

๐ŸŸ ๋ถ•์–ด๋นต๊ณผ ํŒฅ๋ถ•์–ด๋นต์˜ ๊ด€๊ณ„ : ๋ถ•์–ด๋นต↔ํŒฅ๋ถ•์–ด๋นต

๐ŸŸ Object์™€ ํŒฅ๋ถ•์–ด๋นต์˜ ๊ด€๊ณ„ : ์˜ค๋ธŒ์ ํŠธ↔ํŒฅ๋ถ•์–ด๋นต

๐ŸŸ ํŒฅ๋ถ•์–ด๋นต๊ณผ ๊ธˆ๋ถ•์–ด์˜ ๊ด€๊ณ„ : ๊ธˆ๋ถ•์–ด โ“ํŒฅ๋ถ•์–ด๋นต ๊ธˆ๋ถ•์–ด (๋‰˜๊ตฌ์Šˆ..?) - ํŒฅ๋ถ•์–ด๋นต(ํ˜•๋‹˜..)

<2> ๋‹จ์ผ ์ƒ์†

๋‹ค์ค‘ ์ƒ์†์˜ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ๋ฌผ๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋‚˜ ๊ด€๊ณ„๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ž๋ฐ”๋Š” ๋‹จ์ผ ์ƒ์†๋งŒ์„ ์ง€์›ํ•œ๋‹ค

์œ„์˜ UML ์—์„œ ๋ถ•์–ด๋Š” ๋ถ•์–ด๋นต์„ ์ƒ์†๋ฐ›์•„์•ผํ•˜๋Š” ์šด๋ช…์— ์ฒ˜ํ•ด์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ถ•์–ด๋Š” ๋ฌผ๊ณ ๊ธฐ๊ธฐ์— ๋˜ ๋ฌผ๊ณ ๊ธฐ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„๋ณผ๊นŒ ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๊ฒŒ ๋ฌด์Šจ์ผ์ธ๊ฐ€.. ๋ฌผ๊ณ ๊ธฐ์™€ ๋ถ•์–ด๋นต ํด๋ž˜์Šค ๋ชจ๋‘ ์ฟจ๋‹ค์šด ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. ๋ฌผ๊ณ ๊ธฐ์˜ ์ฟจ๋‹ค์šด ๋งค์„œ๋“œ๋Š” ์ˆ˜์˜์„ ํ•˜๋‹ค ์ž ์‹œ ์‰ฌ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์กŒ์ง€๋งŒ, ๋ถ•์–ด๋นต์˜ ์ฟจ๋‹ค์šด์€ ์Œ์‹์ด ์ฐจ๊ฒŒ ์‹๋Š” ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋‹ค. ์ด๋•Œ, ๋ถ•์–ด๋Š” ๋”œ๋ ˆ๋งˆ์— ๋น ์ง„๋‹ค...

์ด๋Ÿฐ ์ƒํ™ฉ์„ ๋ชจ๋ฉดํ•˜๊ธฐ ์œ„ํ•ด ์ž๋ฐ”๋Š” ์ƒ์†์„ ํ•˜๋‚˜๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ์ •ํ–ˆ๋‹ค ์˜ค๋นค ๋„ˆ๋ฌด๊ทน๋‹จ์ ์ด์•ผ..

๊ทธ๋ ‡๋‹ค๋ฉด ์ƒ์† ์™ธ์—๋Š” ํด๋ž˜์Šค๋ฅผ ์žฌํ™œ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์„๊นŒ?

ํฌํ•จ๊ด€๊ณ„

์ƒ์† ์ด์™ธ์— ํด๋ž˜์Šค๋ฅผ ์žฌํ™œ์šฉ ํ•˜๋Š” ๋ฐฉ๋ฒ• 2๊ฐœ ์ด์ƒ์˜ ํด๋ž˜์Šค์—์„œ ํŠน์„ฑ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ํ•˜๋‚˜๋Š” ์ƒ์†, ๋‚˜๋จธ์ง€๋Š” ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค

๐Ÿคฆ๐Ÿป‍โ™€๏ธ ํฌํ•จ ๊ด€๊ณ„๋Š” has - a ๊ด€๊ณ„์ด๋‹ค

public class ๋ฌผ๊ณ ๊ธฐ{
 void swim() { System.out.println("์–ดํ‘ธ์–ดํ‘ธ~"); }
 void coolDown(){ System.out.println("ํ—ฅํ—ฅ..");	} }
public class ๋ถ•์–ด2 extends ๋ถ•์–ด๋นต{ //is a ๊ด€๊ณ„ (๋ถ•์–ด๋นต์„ ์ƒ์†๋ฐ›์€ ๋ถ•์–ด)
	๋ฌผ๊ณ ๊ธฐ ๋ถ•์–ด;                     //has a ๊ด€๊ณ„ (๋ฌผ๊ธฐ๊ฐ€ has a ๋ถ•์–ด)
	boolean isCarp;                 //๊ณ ์œ ์˜ ์†์„ฑ, ๊ธฐ๋Šฅ
	void coolDown(){
  if (isCarp){๋ถ•์–ด.swim();}       //๋ถ•์–ด๋ฉด ํ—ค์—„์นœ๋‹ค
  else{ System.out.println("๋ถ•์–ด๋นต์€ ์ˆ˜์˜ ๋ชปํ•ด");}} } //ํŒฅ์€ ํ—ค์—„ ๋ชป์ณ..
public class ๋ถ•์–ด๋นต๋งŒ๋“ค๊ธฐ{
public static void main(String[]args)
{
//๋ถ•์–ด ๊ฐ์ฒด ๋งŒ๋“ค๊ธฐ
๋ถ•์–ด ๊ธˆ๋ถ•์–ด = new ๋ถ•์–ด(); 
๋ถ•์–ด ํŒฅ = new ๋ถ•์–ด ();

//๋ถ•์–ดํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ๊ณผ ์†์„ฑ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
๊ธˆ๋ถ•์–ด.isCarp = true;
ํŒฅ.isCarp = false;

//๊ณ ์œ  ๊ธฐ๋Šฅํ™œ์šฉ
๋ถ•์–ด.swim(); //์–ดํ‘ธ์–ดํ‘ธ!
ํŒฅ.swim();   //๋ถ•์–ด๋นต์€ ์ˆ˜์˜๋ชปํ•ด..
}
}
๐Ÿคฆ๐Ÿป‍โ™€๏ธ ์–ธ์ œ ํฌํ•จ์„ ์“ฐ๊ณ  ์–ธ์ œ ์ƒ์†์„ ์จ์•ผ ํ• ๊นŒ?

๐Ÿงธ ๋ฌธ๋ฒ•์ ์ธ ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์ง€๋งŒ ํ”„๋กœ์ ํŠธ์˜ ๊ด€์ ์— ๋”ฐ๋ผ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค ๐Ÿงธ

  1. ์ƒ์† is -a ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•˜๋Š”๊ฐ€?
  2. ํฌํ•จ has-a ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•˜๋Š”๊ฐ€?

๐Ÿ†š ๋ถ•์–ด is a ๋ถ•์–ด๋นต โž•๋ถ•์–ด has a ๋ฌผ๊ณ ๊ธฐ ๐Ÿ†š ๋ถ•์–ด is a ๋ฌผ๊ณ ๊ธฐ โž•๋ถ•์–ด has a ๋ถ•์–ด๋นต

2๋ฒˆ์ด ๋‚˜์•„ ๋ณด์ด์ง€๋งŒ, ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ถ•์–ด๋นต ๋งŒ๋“ค๊ธฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ๋ฒˆ์จฐ ๊ด€๊ณ„๋กœ ์ˆ˜๋ฆฝ. ์ƒ์†์€ ํ•œ๋ฒˆ๋ฟ์ด๋‹ˆ ์‹ ์ค‘ํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ์— ๋”ฐ๋ผ ๊ฒฐ์ •ํ•˜์ž

์ธํ„ฐํŽ˜์ด์Šค

์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด extends ๋ฅผ ํ†ตํ•ด ๋‹ค์ค‘ ์ƒ์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ํด๋ž˜์Šค ์ƒ์†๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ, ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฉ”์„œ๋“œ์˜ ๊ตฌํ˜„์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ˜ผ๋ˆ์„ ์ฃผ๋Š” ์ผ์ด ์—†์–ด ๋‹ค์ค‘ ์ƒ์†์ด ๊ฐ€๋Šฅํ•ด์ง€๋Š” ๊ฒƒ์ด๋‹ค.

<3> ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

 ๐Ÿคฆ๐Ÿป‍โ™€๏ธ ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ์€ ํ•˜๋Š”์ผ์€ ๊ฐ™๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ๋งŒ ๋‹ค๋ฅด๊ฒŒ ํ•˜์—ฌ ์กฐ๊ฑด์„ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋Š” ํ–‰์œ„์ธ๋ฐ, ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์€ ๊ฐ™์€ ์กฐ๊ฑด์—์„œ ํ•˜๋Š” ์ผ์„ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋Š”๊ฒƒ์ด๋‹ค

๋งค์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด๋ž€, ์กฐ์ƒ ํด๋ž˜์Šค์— ์ •์˜๋œ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ ํ•ฉํ•˜๊ฒŒ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค

public class Fish{
void swim(){
System.out.println("์–ดํ‘ธ์–ดํ‘ธ");
}
}
public class ๋ถ•์–ด extends Fish{
@override //annotation
void swim(){ //์žฌ์ •์˜ 
System.out.println("๋А๋ฆฟ๋А๋ฆฟ");}
}

๊ธฐ์กด์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ถˆ๋Ÿฌ์™€์„œ ๋ง๊ทธ๋Œ€๋กœ override ํ•  ๋•Œ ํ•„์š”ํ•˜๋‹ค. ๋ถ•์–ด์™€ ์ฐธ์น˜๋Š” ์ˆ˜์˜ํ•˜๋Š” intensity ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ๊ฐ swim ์ด๋ž€ ๊ธฐ๋Šฅ์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜์—ฌ ๊ฐ ์ƒํ™ฉ์— ๋งž๊ฒŒ ๊ณ ์ณ์„œ ์“ฐ๋Š” ๊ฒƒ์ž„ (๋ฎ์–ด ์“ด๋‹ค๊ณ  ๋ณด๋ฉด ํŽธํ•จ)

์˜ค๋ฒ„๋ผ์ด๋”ฉ์˜ ์กฐ๊ฑด

  1. ๋ฉ”์„œ๋“œ ์ด๋ฆ„์ด ๊ฐ™์•„์•ผ ํ•œ๋‹ค
  2. ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜, ํƒ€์ž…, ์ˆœ์„œ๊ฐ€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค
  3. ๋ฆฌํ„ด ํƒ€์ž…์ด ๊ฐ™์•„์•ผ ํ•œ๋‹ค
  4. ์ ‘๊ทผ ์ œํ•œ์ž๋Š” ๋ถ€๋ชจ๋ณด๋‹ค ๋ฒ”์œ„๊ฐ€ ๋„“๊ฑฐ๋‚˜ ๊ฐ™์•„์•ผ ํ•œ๋‹ค
  5. ์กฐ์ƒ๋ณด๋‹ค ๋” ํฐ ์˜ˆ์™ธ๋ฅผ ๋˜์งˆ ์ˆ˜ ์—†๋‹ค

<4> ์˜ค๋ธŒ์ ํŠธ ํด๋ž˜์Šค

์˜ค๋ธŒ์ ํŠธ ํด๋ž˜์Šค๋Š” ๊ฐ€์žฅ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋กœ, ๋ชจ๋“  ํด๋ž˜์Šค์˜ ์กฐ์ƒ์ด๋‹ค. ์ฆ‰, ์˜ค๋ธŒ์ ํŠธ์˜ ๋งด๋ฒ„๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์˜ ๋งด๋ฒ„๊ฐ€ ๋œ๋‹ค

 

<5>Super ํ‚ค์›Œ๋“œ

this ๋ฅผ ํ†ตํ•ด ๋งด๋ฒ„์— ์ ‘๊ทผํ–ˆ๋“ฏ์ด super ๋ฅผ ํ†ตํ•ด ์กฐ์ƒ ํด๋ž˜์Šค ๋งด๋ฒ„ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค super. ์„ ์ด์šฉํ•ด ์กฐ์ƒ์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋กœ ์กฐ์ƒ์˜ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉ ํ•œ๋‹ค

void swim(){
if(isCap) { ๋ถ•์–ด.swim();}
else{
 System.out.println("๋ถ•์–ด๋นต์€ ์ˆ˜์˜๋ชปํ•ด");
}
}
void swim() {
if(isCarp){ ๋ถ•์–ด.swim();}
else{ 
super.swim();} //์กฐ์ƒํด๋ž˜์Šค์˜ ์ฝ”๋“œ ํ˜ธ์ถœ

}
  1. ๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„ ์‚ฌ์šฉ๋œ ์œ„์น˜์—์„œ ์ ์  ํ™•์žฅํ•ด๊ฐ€๋ฉฐ ์ฒ˜์Œ ๋งŒ๋‚œ ์„ ์–ธ๋ถ€์— ์—ฐ๊ฒฐ๋œ๋‹ค method ๋‚ด๋ถ€ → ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๋งด๋ฒ„ ๋ณ€์ˆ˜ → ์กฐ์ƒ ํด๋ž˜์Šค์˜ ๋งด๋ฒ„ ๋ณ€์ˆ˜

1๏ธโƒฃ ์•„๋ž˜ ํด๋ž˜์Šค์˜ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ƒํ•ด๋ณด์‹œ์˜ค

2๏ธโƒฃ method์˜ x๋ฅผ ์ฃผ์„ํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ƒํ•ด๋ณด์‹œ์˜ค

3๏ธโƒฃ child ์˜ x ๋„ ์ฃผ์„ํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ƒํ•ด๋ณด์‹œ์˜ค

4๏ธโƒฃ Parent ํด๋ž˜์Šค์˜ x๋งŒ ์ฃผ์„ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ƒํ•ด ๋ณด์‹œ์˜ค

class Parent{ String x = "parent";}

class Child extends Parent{
String x = "Child";   //memeber ๋ณ€์ˆ˜
void method(){
String x = "method";  //local ๋ณ€์ˆ˜
System.out.println("X: " +x);
System.out.println("this.x: " + this.x);
System.out.println("super.x: " + super.x);
}
}

class ScopeTest{
main(){ //main์ฃผ์ €๋ฆฌ ์ƒ๋žตํ–‡์Œ ใ…Ž..
Child child = new Child();
child.method();
}
}

1๏ธโƒฃ ์˜ˆ์ƒ ๊ฒฐ๊ณผ X: method this.x: child super.x: parent

2๏ธโƒฃ ์˜ˆ์ƒ ๊ฒฐ๊ณผ X: Child this.x : Child super.x : parent

3๏ธโƒฃ ์˜ˆ์ƒ ๊ฒฐ๊ณผ X: parent this.x: parent super.x: parent;

4๏ธโƒฃ ์˜ˆ์ƒ๊ฒฐ๊ณผ X: method this.x: Child super.x: null → ERROR

โญthis ๋ž€ ํ‚ค์›Œ๋“œ๋Š” ๋งด๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๋œปํ•˜๋Š” ํ‚ค์›Œ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์—, 1๋ฒˆ ๋ฌธ์ œ์—์„œ this.x๋ฅผ ํ–ˆ์„๋•Œ void ์•ˆ์— ์„ ์–ธ๋œ ๋กœ์ปฌ๋ณ€์ˆ˜(์ง€์—ญ๋ณ€์ˆ˜)์ธ method ๊ฐ€ ์•„๋‹ˆ๋ผ, ๋งด๋ฒ„๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ด๋‹ค!

 

2. this() ์™€ super()

(1) this () ๊ฐ€ ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋“ฏ์ด, super() ๋Š” ์กฐ์ƒ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœ

  ๐Ÿงธ ์กฐ์ƒ ํด๋ž˜์Šค์— ์„ ์–ธ๋œ ๋งด๋ฒ„๋“ค์€ ์กฐ์ƒ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์—์„œ ์ดˆ๊ธฐํ™”๊ฐ€ ์ด๋ค„์ ธ์„œ ์žฌํ™œ์šฉ

  ๐Ÿงธ ์ž์‹ ํด๋ž˜์Šค์— ์„ ์–ธ๋œ ๋งด๋ฒ„๋“ค๋งŒ ์ž์‹ ํด๋ž˜์Šค ์ƒ์„ฑ์ž์—์„œ ์ดˆ๊ธฐํ™” 

(2) super()๋Š” ์ž์‹ ํด๋ž˜์Šค ์ƒ์„ฑ์ž์˜ ๋งจ ์ฒซ์ค„์—์„œ๋งŒ ํ˜ธ์ถœ ๊ฐ€๋Šฅ

  ๐Ÿงธ ์ƒ์„ฑ์ž์˜ ์ฒซ์ค„์—๋งŒ this() ๋˜๋Š” super() ๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค

(3) ๋ช…์‹œ์ ์œผ๋กœ this() ๋˜๋Š” super() ์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ super()์„ ์‚ฝ์ž…ํ•ด์ง„๋‹ค

  ๐Ÿงธ๋งจ ์ƒ์œ„ Object๊นŒ์ง€ ๊ฐ์ฒด๊ฐ€ ๋‹ค ๋งŒ๋“ค์–ด์ง

class Parent {
String name;
	Parent(String name){
   //super(); -> ์˜ค๋ธŒ์ ํŠธ์˜ ๊ธฐ๋ณธ์ƒ์„ฑ์ž ํ˜ธ์ถœ. ์•„๋ฌด๊ฒƒ๋„ ์•ˆ์จ์žˆ์œผ๋ฉด ๋ช…์‹œ์ ์œผ๋กœ ๋ถˆ๋ฆ„
	 this.name = name; //this์™€ super๋Š” ๋งจ ์ฒซ์ค„๋งŒ ๊ฐ€๋Šฅ
  }
}
728x90
๋ฐ˜์‘ํ˜•

'๐Ÿ““ STUDY > JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์บก์Аํ™”  (0) 2022.05.17
๋‹คํ˜•์„ฑ  (0) 2022.05.17
์ถ”์ƒํ™”  (0) 2022.05.17
๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ  (1) 2022.05.17
Class Case Exception  (1) 2022.05.17
    '๐Ÿ““ STUDY/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • ์บก์Аํ™”
    • ๋‹คํ˜•์„ฑ
    • ์ถ”์ƒํ™”
    • ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    JuneBee
    JuneBee
    โ‚Šหš.๐ŸŽง๐Ÿ““ ๊ธฐ๋ก์šฉ ๋ธ”๋กœ๊ทธ ๐“‚ƒ๐Ÿ–Š

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”