this
: this๋ class ๋ด์ ๋ณ์์ ์ ๊ทผํ ๋ ์ฌ์ฉํ๋ keyword์ด๋ค.super
: ๋ถ๋ชจ class์ ๋ณ์๋ฅผ ์์์๊ฒ ์์ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ keyword์ด๋ค.void main() {
Engineer codeFactory = Engineer(languages: ['dart', 'java', 'javascript'], name: '์ฝ๋ํฉํ ๋ฆฌ', building: '์ฌ์๋ ์์ํฌ');
print(codeFactory.name); //์ฝ๋ํฉํ ๋ฆฌ
print(codeFactory.building); //์ฌ์๋ ์์ํฌ
print(codeFactory.languages); //['dart', 'java', 'javascript']
codeFactory.sayInfo(); //์ ์ ์ด๋ฆ์ ์ฝ๋ํฉํ ๋ฆฌ์
๋๋ค. ์ ๊ฐ ๊ทผ๋ฌดํ๋ ๊ฑด๋ฌผ์ ์ฌ์๋ ์์ํฌ์
๋๋ค. ์ ๊ฐ ์ฌ์ฉํ ์ ์๋ ์ธ์ด๋ค์ dart,java,javascript ์
๋๋ค.
codeFactory.sayName(); //this.name์ ์ฝ๋ํฉํ ๋ฆฌ, super.name์ ์ฝ๋ํฉํ ๋ฆฌ
}
class Employee {
final String building;
final String name;
Employee(this.building, this.name);
void printNameAndBuilding() {
print('์ ์ด๋ฆ์ $name์
๋๋ค. $building ๊ฑด๋ฌผ์์ ๊ทผ๋ฌดํ๊ณ ์์ต๋๋ค.');
}
}
// ์ฌ์ฉํ ์ค ์๋ ์ธ์ด - ๋ฆฌ์คํธ
class Engineer extends Employee {
final List<String>? languages;
Engineer({this.languages, name, building}) : super(building, name);
void sayInfo() {
print('์ ์ ์ด๋ฆ์ ${super.name}์
๋๋ค. ์ ๊ฐ ๊ทผ๋ฌดํ๋ ๊ฑด๋ฌผ์ $building์
๋๋ค. ์ ๊ฐ ์ฌ์ฉํ ์ ์๋ ์ธ์ด๋ค์ ${languages?.join(',')} ์
๋๋ค.');
}
//์์์ ํตํด name, building์ ์ฌ์ฉํ ์ ์๊ฒ๋๋ฏ๋ก ์ฌ๊ธฐ์ this.name == super.name์ด ๊ฐ์ ๊ฐ์ ๊ฐ๊ฒ ๋๋ค.
//์์๋ฐ์ property๋ฅผ ์์์ด ๊ทธ๋๋ก ์ฌ์ฉํ๋ฏ๋ก ๊ฐ์ด ๋์ผํ๋ค๊ณ ์ดํดํ ์ ์๋ค.
void sayName() {
print('this.name์ $name, super.name์ ${super.name}');
}
}
์ถ์ฒ:YOUTUBE-์ฝ๋ํฉํ ๋ฆฌ