แ„Œแ…ฎแ†จแ„€แ…ฆแ†ปแ„‹แ…ฅแ„‹แ…ญ.jpeg

์˜ค๋Š˜ ์ด์‹œ๊ฐ„์—๋Š” ์ƒ์†(inheritance)๊ณผ ์ถ”์ƒํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค์—๋Œ€ํ•ด์„œ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋ชธ์ด ์ข‹์ง€ ์•Š์•„์„œ ๋”์šฑ ์–ด๋ ค์› ๊ณ  ๋„ˆ๋ฌด ํž˜๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์˜ค์ค€์„ ์„ ์ƒ๋‹˜์˜ ์„ค๋ช…์„ ๋“ค์œผ๋ฉด์„œ ์ด๋ฒˆ์ฃผ๋„ ํ™”์ดํŒ… ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

(๊ทผ๋ฐ ์ดํ•ดํ•˜๊ณ  ์ง‘์—์™€์„œ ์ •๋ฆฌ๋ฐ ์—ฐ์Šต๋ฌธ์ œ ๋ณด๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜๋Š”๊ฑฐ์ฃ โ€ฆโ€ฆํ•˜๋ฉด์„œ ๊นŒ๋จน์–ด์š”..)

์ƒ์†(inheritance)

๋ถ€๋ชจ์˜ ์ƒํƒœ(filed)์™€ ํ–‰์œ„(function)์„ ๋ฌผ๋ ค ๋ฐ›๋Š”๋‹ค๋กœ ์ƒ์† ๊ฐœ๋…์€ ๋ถ€๋ชจ ํด๋ž˜์Šค์™€ ์ž์‹ ํด๋ž˜์Šค๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ถ€๋ชจ๋‹˜์ด ์ž์‹์—๊ฒŒ ๋ฌผ๋ ค์ค€๋‹ค, ์ƒ์†ํ•ด์ค€๋‹คโ€ฆ ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด์„œ ๋ถ€๋ชจํด๋ž˜์Šค๊ฐ€ ๊ฐ–๊ณ ์žˆ๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋Š” ์ž์‹์ด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ž์‹ํด๋ž˜์Šค๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋Š” ๋ถ€๋ชจ๊ฐ€ ๊ฐ€์ง€์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

class Animal {} // ์ง์Šน์ด ์•„๋‹Œ ๋™๋ฌผ๋กœ ๋ถ€๋ชจํด๋ž˜์Šค ์ •์˜ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ‘์— Person์ด๋ผ๋Š” ํด๋ž˜์Šค๋Š” ๋งํ•˜๋Š” ํ•จ์ˆ˜์™€ ๊ฑท๋Š” ํ•จ์ˆ˜์™€ ์ด๋ฆ„์„ ๊ฐ€์กŒ๋‹ค๊ณ  ํ•ด๋ณผ๊ฒŒ์š”.

class Animal {
Animal({
required this.name,
 });

final String name;

void speak() {
 print('$name ์†Œ๋ฆฌ๋ฅผ ๋‚ด๋‹ค');
 }

void walk() {
print('$nmae ๊ฑท๋‹ค');
 }
)

๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

void main() {
Animal myPet = Animal(name: '๋‚˜์˜ ๋™๋ฌผ');
print(myPet.name);
myPet.speak();
myPet.walk();
}

์ž์‹ ํด๋ž˜์Šค๊ฐ€ ์žก์ข…๊ฐœ ๋ผ๊ณ  ํ•œ๋‹ค๋ฉดโ€ฆ

class FixDog {}

์ž์‹์ด ๋ถ€๋ชจํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” ๋ฐฉ๋ฒ•์€ extendsํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

clss FixDog extends myPet {
FixDog(String name) :  super(name: name);
}

์ž์‹์ธ ์žก์ข…๊ฐœ๋Š” ๋ถ€๋ชจ๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋˜ ํ•จ์ˆ˜๋ฅผ ๋‚ด๊ฒƒ์œผ๋กœ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

FixDog dog = FixDog('์ž์‹');
dog.speak();
dog.walk();

๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ์— ์ž์‹ํด๋ž˜์Šค์— ์ถ”๊ฐ€์ ์œผ๋กœ ์ž๊ธฐ๋งŒ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

void main() {
  Animal myPet = Animal(name: '๋‚˜์˜ ๋™๋ฌผ');
  myPet.speak();
  myPet.walk();

  FixDog dog = Fixdog('์ž์‹');
  dog.speak();
  dog.walk();
  dog.snap(); // ์ถ”๊ฐ€์ ์œผ๋กœ ์ž๊ธฐ๋งŒ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
}

๋‹ค์‹œ ๋งํ•ด์„œ ๋ถ€๋ชจ๋Š” ์ž์‹์˜ ํ•จ์ˆ˜๋ฅผ ์“ธ์ˆ˜ ์—†๊ณ  ์ž์‹์€ ๋ถ€๋ชจ์˜ ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜๋ฅผ ๋งˆ์Œ๊ป ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.