ํด๋ž˜์Šค์™€ ์ธ์Šคํ„ด์Šค

Dart๋Š” ๋ชจ๋“ ๊ฒƒ์ด ๊ฐ์ฒด์ธ ์™„์ „ ๊ฐ์ฒด ์ง€ํ–ฅ์–ธ์–ด๋กœ ๋ชจ๋“  ๊ฐ์ฒด๋Š” ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ๋งํ• ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋“  ํด๋ž˜์Šค๋Š” objectํด๋ž˜์Šค์˜ ์ž์‹์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ๋งํ•ด์„œ ๋ณ€์ˆ˜, ์ž๋ฃŒ๊ตฌ์กฐ, ํ•จ์ˆ˜ ๋˜๋Š” ๋งค์„œ๋“œ ๋“ฑ์ด ๊ฐ์ฒด๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

แ„ƒแ…กแ„‹แ…ฎแ†ซแ„…แ…ฉแ„ƒแ…ณ.jpeg

์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ž‘์„ฑํ•˜๋Š”๊ฒƒ์„ โ€˜์ธ์Šคํ„ด์Šคํ™”โ€™๋ผ๊ณ  ํ•˜๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ์— ์ž‘์„ฑ๋œ ๊ฐ์ฒด๋ฅผ โ€˜์ธ์Šคํ„ด์Šคโ€™๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค,

์—ฌ๊ธฐ์„œ ์ธ์Šคํ„ดํ™”๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„ค๊ณ„๋„๊ฐ€ ํ•„์š”ํ•œ๋ฐ ์„ค๊ณ„๋„ ์—ญํ• ์„ ํ•˜๋Š”๊ฒƒ์ด ํด๋ž˜์Šค ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํด๋ž˜์Šค์•ˆ์—๋Š” ์†์„ฑ์„ ํ‘œํ˜„ํ• ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋ฅผ โ€˜ํ”„๋กœํผํ‹ฐโ€™๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰ ๋ถ•์–ด๋นต์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜์ฃฝ์„ ํ‹€์— ๋„ฃ์„๋•Œ ํด๋ž˜์Šค๋ฅผ ์ง„ํ–‰๋ผ๊ณ  ๋ถ•์–ด๋นต์ด ์™„์„ฑ๋œ ๋ชจ์Šต์„ ์ธ์Šคํ„ด์Šคํ™”๊ณผ ๋œ ์ธ์Šคํ„ด์Šค(๋˜๋Š” ๊ฐ์ฒด) ๋ผ๊ณ ์ƒ๊ฐํ•˜๋ฉด ์ข‹์„๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ex)์„ค๊ณ„๋„ = ํ‹€

Dart์—์„œ ํด๋ž˜์Šค ์ƒ์„œ์ž๋Š” ํด๋ž˜์Šค์ด๋ฆ„๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์ƒ์„ฑ์ž๋Š” ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ• ๋•Œ ํ˜ธ์ถœ๋˜๊ณ  ํด๋ž˜์Šค์˜ ๊ฐ ์ธ์Šคํ„ด์Šค๋Š” ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๊ณ ์œ ํ•œ ์†์„ฑ์„ ๊ฐ€์งˆ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

class point {
late final String name;
late int age;

point(String name, int age) {
this.name = name;
this.age = age;
 }
}

๋งค๊ฐœ๋ณ€์ˆ˜๋ž€ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ• ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. (๋งค๊ฐœ๋ณ€์ˆ˜ = ์ธ์ž = ํŒŒ๋ผ๋ฏธํ„ฐ : ํ•จ์ˆ˜์—์„œ ์ „๋‹ฌ๋œ ๊ฐ’์„ ๋ฐ›๋Š” ๋ณ€์ˆ˜) Dart์—์„œ๋Š” ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ• ๋•Œ this ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์— ์ ‘๊ทผํ• ์ˆ˜ ์žˆ๊ณ  ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํด๋ž˜์Šค์˜ ๋งด๋ฒ„ ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” this.์„ ๋ถ™์—ฌ์„œ ๊ตฌ๋ถ„ ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ late๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋‚˜์ค‘์— ๋ฐ›์•„์˜ค๋Š”๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

var student = prince(); //new ์ƒ๋žต๊ฐ€๋Šฅํ•˜๋‹ค

var teacher = prince();

student.name = 'cheon'
teacher.name = 'oh'
print('student name = ${prince.getName()}');  //student name = cheon
print('teacher name = ${teacher.getName()}'); //teacher name = oh

ํด๋ž˜์Šค๋Š” ์ผ์ข…์˜ ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ newํ‚ค์›Œ๋“œ๋Š” ์ธ์Šคํ„ด์Šคํ™”๋ผ๋Š” ํ‚ค์›Œ๋“œ๋กœ ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„์— ์ ‘๊ทผ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜, ๋ฉค๋ฒ„ ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ student.name = โ€˜cheonโ€™์ด๋ผ๊ณ  ์„ ์–ธ ํ•œ ๊ฒƒ์„ ๋ณผ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰ ํด๋ž˜์Šค ์•ˆ์— ์ž‘์„ฑํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฉ”์„œ๋“œ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ ๋Š” ํด๋ž˜์Šค์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋“ฑ์˜ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ผ๋ฉฐ ๋ฉ”์„œ๋“œ ๋˜ํ•œ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์™€ ์—ฐ์‚ฐ์ž์— ๋ถ™์—ฌ ์ ‘๊ทผํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.