인스턴스 생성
💬 new 키워드를 생략하여 인스턴스화할 수 있다.
var person = new Person();
var person2 = Person();
접근 지정자
💬 변수명 앞에 _ 기호가 있으면 private, _ 기호가 없으면 public이다.
게터, 세터
💬 변수명 앞에 _가 붙어 private 변수인 경우, 클래스 외부에서 접근하기 위해서는 게터와 세터 메서드를 작성해줘야 한다.
class Person {
String _name;
String get name => (_name == null) ? 'Ryong' : _name;
set name(String name) => _name = name;
}
main() {
Person person = Person();
person.name = 'Hello';
print(person.name);
}
상속
class Father {
String name = '아빠';
void run() { }
}
class Son extends Father {
@override
void run() {
super.run();
fly();
}
void fly() { }
}
추상 클래스
💬 추상 클래스는 그대로 인스턴스화할 수 없으며, 다른 클래스에서 구현하여 기능을 완성하는 상속 재료로 사용된다.
abstract class Monster {
void attack();
}
class Goblin implements Monster {
@override
void attack() {
print('고블린 어택');
}
}
class Bat implements Monster {
@override
void attack() {
print('박쥐 어택');
}
}
💬 여러 추상 클래스를 하나의 클래스에서 한 번에 구현할 수도 있으며, 그럴 경우 모든 추상 클래스를 오버라이드 해야 한다.
abstract class Flyable {
void fly();
}
class Boss implements Monster, Flyable {
@override
void attack() {
print('공격');
}
@override
void fly() {
print('공중 공격');
}
}
믹스인
💬 with 키워드를 사용하면 상속하지 않고 다른 클래스의 기능을 가져오거나 오버라이드할 수 있다.
class Goblin implements Monster {
@override
void attack() {
print('공격');
}
}
class DarkGoblin extends Goblin with Hero {
}
▫ 이렇게 작성된 DarkGoblin은 Goblin이기도 하고, Hero이기도 하며, Monster이기도 함
열거 타입
💬 상수를 정의하는 특수한 형태의 클래스
enum Status { login, logout }
var authStatus = Status.logout;
switch (authStatus) {
case Status.login;
print('로그인');
break;
case Status.logout;
print('로그아웃');
break;
}
'Dart' 카테고리의 다른 글
[ Dart ] 함수형 프로그래밍 (0) | 2021.12.21 |
---|---|
[ Dart ] 컬렉션 (0) | 2021.12.21 |
[ Dart ] 분기와 반복 (0) | 2021.12.21 |
[ Dart ] 함수 (0) | 2021.12.21 |
[ Dart ] 기본 문법 (0) | 2021.12.21 |