Dart๋ ๋ชจ๋ ๊ฒ์ด ๊ฐ์ฒด์ธ ์์ ๊ฐ์ฒด ์งํฅ์ธ์ด๋ก ๋ชจ๋ ๊ฐ์ฒด๋ ํด๋์ค์ ์ธ์คํด์ค๋ผ๊ณ ๋งํ ์ ์๋ค. ๋ชจ๋ ํด๋์ค๋ objectํด๋์ค์ ์์์ ๋๋ค. ๋ค์๋งํด์ ๋ณ์, ์๋ฃ๊ตฌ์กฐ, ํจ์ ๋๋ ๋งค์๋ ๋ฑ์ด ๊ฐ์ฒด๊ฐ ๋ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑํ๋๊ฒ์ โ์ธ์คํด์คํโ๋ผ๊ณ ํ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ โ์ธ์คํด์คโ๋ผ๊ณ ํฉ๋๋ค,
์ฌ๊ธฐ์ ์ธ์คํดํ๋ฅผ ํ๊ธฐ ์ํด์๋ ์ค๊ณ๋๊ฐ ํ์ํ๋ฐ ์ค๊ณ๋ ์ญํ ์ ํ๋๊ฒ์ด ํด๋์ค ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋์ค์์๋ ์์ฑ์ ํํํ ์ ์๋๋ฐ ์ด๋ฅผ โํ๋กํผํฐโ๋ผ๊ณ ํฉ๋๋ค.
์ฆ ๋ถ์ด๋นต์ ๋ง๋ค๊ธฐ ์ํด์๋ ๋ฐ์ฃฝ์ ํ์ ๋ฃ์๋ ํด๋์ค๋ฅผ ์งํ๋ผ๊ณ ๋ถ์ด๋นต์ด ์์ฑ๋ ๋ชจ์ต์ ์ธ์คํด์คํ๊ณผ ๋ ์ธ์คํด์ค(๋๋ ๊ฐ์ฒด) ๋ผ๊ณ ์๊ฐํ๋ฉด ์ข์๊ฒ ๊ฐ์ต๋๋ค. 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โ์ด๋ผ๊ณ ์ ์ธ ํ ๊ฒ์ ๋ณผ์ ์์ต๋๋ค. ๋ฉ์๋์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ๋ ๋์ผํฉ๋๋ค.
์ฆ ํด๋์ค ์์ ์์ฑํ๋ ํจ์๋ฅผ ๋ฉ์๋๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ๋ฉ์๋ ๋ ํด๋์ค์ ํ๋กํผํฐ๋ฅผ ์กฐ์ํ๋ ๋ฑ์ ์ฉ๋๋ก ์ฌ์ฉ๋ผ๋ฉฐ ๋ฉ์๋ ๋ํ ์ธ์คํด์ค ๋ณ์์ ์ฐ์ฐ์์ ๋ถ์ฌ ์ ๊ทผํ ์ ์์ต๋๋ค.