**출처 : 인프런 강좌 'Dart 언어 4시간만에 완전정복'의 2강 OOP 강의 내용을 정리한 script 입니다.
1.상속
void main() {
print('-----fruit---------');
Fruit someFruit = Fruit(name:"망고",fruitCount:5);
someFruit.sayName();
Sour sourFruit = Sour('오렌지',7);
sourFruit.sayFruitCount();
sourFruit.sayEatme();
print('-----type comparison---------');
print(someFruit is Fruit);
print(sourFruit is Sour);
print(someFruit is Sour);
}
//1.inheritance(상속)
class Fruit{
String name;
int fruitCount;
Fruit({
required this.name,
required this.fruitCount,
});
void sayName(){
print('저는 ${this.name}입니다');
}
void sayFruitCount(){
print('${this.name}은 ${this.fruitCount}개의 과일들이 있습니다.');
}
}
class Sour extends Fruit {
Sour(
String name,
int fruitCount
) : super (
name:name,
fruitCount:fruitCount
);
void sayEatme(){
print('${this.name}는 맛있어 먹고싶쥬?');
}
}
2.override
//override(덮어쓰다)
void main() {
TimesTwo tt = TimesTwo(2);
print(tt.calculator());
TimesFour tf = TimesFour(2);
print(tf.calculator());
}
class TimesTwo{
final int number;
TimesTwo(
this.number
);
int calculator(){
return number*2;
}
}
class TimesFour extends TimesTwo{
TimesFour(int number):super(number);
@override
int calculator(){
//==// return super.number*4;
//==// return number*4;
//this.calculator쓰면 안됌 => 내부에서 현재 class가 돌게 되어 무한반복함
return super.calculator()*2;
}
}
3.static
void main() {
Employee jiyoon = Employee('지윤');
//Employee의 name은 final로 지정되지 않아 인스턴스에 귀속되어있다.
jiyoon.name = '기범';
Employee.building = '화물재단빌딩';
jiyoon.printNameAndBuilding();
Employee.printBuilding();
}
class Employee {
//static은 class에 귀속된다.
static String? building;
String name;
Employee(this.name);
void printNameAndBuilding(){
print('${name} 이 ${building}에 있습니다.');
}
static void printBuilding(){
print('저는 $building 건물에서 근무합니다.');
}
}
4.interface 작업중
void main() {
}
//1.02부터 봐야함
//interface - dart에서는 class로 사용하는 경우가 많음 : implements키워드 사용
//=>상속과는 다른점 : 기본 시그니처를 맞춰주어야함
class FruitInterface{
String name;
FruitInterface(this.name);
void sayName(){
}
}
class Sour implements FruitInterface{
String name;
Sour(this.name);
void sayName(){
}
}
'A.개발관련자료' 카테고리의 다른 글
[AWS] AWS Certified Solutions Architect Associeate - 조이지트 배너지[2] (0) | 2025.04.04 |
---|---|
[React] React 작업물을 github.io (github page)로 배포하기 (0) | 2025.04.03 |
WARNING: expo-cli has not yet been tested against Node.js v18.12.1. (0) | 2025.04.03 |
[docker+nestjs+aws]프로젝트 1주차 정리 (0) | 2025.04.03 |
nvm으로 node 버전 변경 (0) | 2025.04.03 |