**출처 : 인프런 강좌 'Dart 언어 4시간만에 완전정복'의 2강 OOP 강의 내용을 정리한 script 입니다.
//OOP (객체지향 프로그래밍) 29분
void main() {
// 1.
// Fruit weRFruit = Fruit();
// print(weRFruit.fruits);
// 2.
// Fruit weRFruit = Fruit("딸기",["수박", "참외", "사과"]);
// print(weRFruit.fruits);
// 3.
Fruit theyRFruit = Fruit.namedConstructor(
[
["사과","바나나"],"멜론"
]);
print(theyRFruit.fruits);
//4. const 사용에 땨른 boolean값
Fruit usRFruit = Fruit("바나나",["멜론", "배"]);
print(usRFruit.fruits);
Fruit usRFruit2 = Fruit("바나나",["멜론", "배"]);
print(usRFruit2.fruits);
print(usRFruit.fruits ==usRFruit2.fruits); //false -usRFruit만 const를 사용해서
//5.생성한 getter
print(theyRFruit.firstFruit);
print(usRFruit.firstFruit);
//6.변경할 setter
theyRFruit.firstFruit = '바나나';
print(theyRFruit.firstFruit);
}
//1.class생성
// class Fruit {
// String name = "딸기";
// List<String> fruits = ["수박", "참외", "사과"];
// void sayHello() {
// print("안녕하세요 과일들입니다.");
// }
// void introduce() {
// print('저희는 귀여운 과일리스트입니다.');
// }
// }
// class Fruit {
// final String name;
// final List<String> fruits;
// //2.class-constructor로 파라미터 받을 수 있음(클래스 안에)
// // Fruit(String name, List<String> fruits)
// // : this.name = name,
// // this.fruits = fruits;
// //==
// const Fruit(this.name,this.fruits);
// //3.named constructor
// Fruit.namedConstructor(List values):this.fruits = values[0], this.name = values[1];
// void sayHello() {
// print("안녕하세요 ${this.name}입니다.");
// }
// void introduce() {
// print('저희는 귀여운 과일리스트${this.fruits}입니다.');
// }
// }
//5.getter(데이터를 가져올때)와 setter(데이터를 설정할때) => 일반함수와 다른점? : 뉘앙스 차이, 훨씬 간단한 로직일경우만 사용
class Fruit {
String name;
List<String> fruits;
Fruit(this.name,this.fruits);
//3.named constructor
Fruit.namedConstructor(List values):this.fruits = values[0], this.name = values[1];
void sayHello() {
print("안녕하세요 ${this.name}입니다.");
}
void introduce() {
print('저희는 귀여운 과일리스트${this.fruits}입니다.');
}
//getter(get)
String get firstFruit{
return this.fruits[0];
}
//setter(set) - 파라미터 무조건 한개만
set firstFruit(String name){
this.fruits[0] = name;
}
//6.private속성 기능(변수 앞쪽에 언더스코어사용(_)) - 외부파일에서 내부파일 함수나 로직 import 하지 못하게하는 역할
}