일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Flutter
- springboot
- 자바
- 인프런
- jsp
- java
- 건담베이스
- 日本語
- Spring
- 건담
- メソッド
- 単語
- 일본어
- rails
- vscode
- 반다이몰
- C로 시작하는 컴퓨터 프로그래밍4판
- javascript
- 디지몬
- 연습문제
- DART
- Web
- CSS
- ruby
- 一日一つメソッド
- nico
- rails7
- 비즈니스일본어
- Python
- html
- Today
- Total
AR삽질러
Dart Class2 - (7) 본문
Dart Class2
1. Enums
- Dart의 열거형(Enum)은 고정된 상수 목록을 정의하는데 사용되는 데이터 형식이다.
- Enum을 사용하게 되면 코드를 읽기 쉽고 실수를 없애며 이해하기 쉽게 만들 수 있다.
enum Hoby { board, ski }
class Intro {
String name;
int age;
Hoby hobby;
Intro({required this.name, required this.age, required this.hobby});
void sayHello() {
print("안녕하세요. 저는 $name이고 나이는 $age입니다. 그리고 취미는 $hobby입니다.");
}
}
void main() {
var ar = Intro(name: "아랑", age: 25, hobby: Hoby.board);
ar.name = "랑랑";
ar.age = 30;
ar.hobby = Hoby.ski;
ar.sayHello();
}
- 하지만 Enum에는 한글을 사용할 수 없으니 주의해야한다.
enum Day { monday, tuesday, wednesday, thursday, friday, saturday, sunday }
class Today {
Day day;
Today({
required this.day,
});
String getDayName() {
switch (day) {
case Day.monday:
return "월요일";
case Day.tuesday:
return "화요일";
case Day.wednesday:
return "수요일";
case Day.thursday:
return "목요일";
case Day.friday:
return "금요일";
case Day.saturday:
return "토요일";
case Day.sunday:
return "일요일";
default:
return "알 수 없는 요일";
}
}
void sayHello() {
print("오늘은 ${getDayName()}입니다.");
}
}
void main() {
var today = Today(day: Day.monday);
today.sayHello();
}
2. Abstract Classes
- Dart의 추상화클래스(Abstract Classes)는 직접 인스턴스를 생성할수는 없고 다른 클래스들이 상송하여 사용할 수 있는 블루프린트(청사진)같은 역할을 한다.
특징
1) instance생성 불가 : 추상클래스는 직접 객체를 생성할 수 없다.(new키워드 사용 불가)
2) 상속가능 : Abstract class는 다른 클래스들에게 상속될 수 있다.
enum Hobby { board, ski }
class Member {
String name;
int age;
Hobby hobby;
Member({
required this.name,
required this.age,
required this.hobby,
});
String getMyHobby() {
switch (hobby) {
case Hobby.board:
return "보드";
case Hobby.ski:
return "스키";
default:
return "등록되지 않은 취미";
}
}
void sayHello() {
print("안녕 나의 이름은 $name이야");
print("나의 취미는 ${getMyHobby()} 입니다.");
}
}
void main() {
var ar = Member(name: "아랑", age: 23, hobby: Hobby.board);
ar.sayHello();
}
3. Inheritance
- Inheritance(상속)은 객체 지향 프로그래밍(OOP)의 개념으로 기존 클래스(부모, super)의 속성과 메서드를 새로운 클래스(자식, 서브)에서 재사용할 수 있게 한다.
class Human {
final int phonnumber;
Human({required this.phonnumber});
void sayHello() {
print("안녕하세요. 저의 번호는 $phonnumber 입니다.");
}
}
enum Team { blud, red }
class Player extends Human {
final Team team;
Player({required this.team, required int phonnumber})
: super(phonnumber: phonnumber);
}
void main() {
var player = Player(team: Team.blud, phonnumber: 01011112222);
player.sayHello();
}
@override사용
class Human {
final int phonnumber;
Human({required this.phonnumber});
void sayHello() {
print("안녕하세요. 저의 번호는 $phonnumber 입니다.");
}
}
enum Team { blud, red }
class Player extends Human {
final Team team;
Player({
required this.team,
required int phonnumber,
}) : super(phonnumber: phonnumber);
@override
void sayHello() {
super.sayHello();
print("그리고 저는 ${team} 입니다.");
}
}
void main() {
var player = Player(team: Team.blud, phonnumber: 01011112222);
player.sayHello();
}
Human클래스 : phonnumber필드를 가지고 초기화할 수 있다.
Player클래스 : Human클래스를 상속하고 team필드가 추가되었다.
생성자 : Player클래스의 생성자에서 team. phonnumber를 필요로하기 때문에 super(phonnumber: phonnumber)에서 Human의 생성자를 호출하고 phonnumber를 전달하게된다.
@override사용
- sayHello메서드 오버라이딩 : Player클래스에서 sayHello메서드를 다시 정의하여 부모 클래스인 Human클래스에서 상속받은 sayHello메서드를 호출하고 print를 출력한다.
4. Mixins
- Dart에서 Mixins는 클래스에 기능을 추가하거나 코드를 재사용하기 위한 매커니즘으로 클래스의 계층 구조를 변경하지 않으면서 클래스에 새로운 기능을 주입할 수 있게 해주는 객체 지향 프로그래밍 패턴이다.
- Mixins는 생성자가 없는 클래스로 상속시 extends를 하지 않고 with을 사용한다.
mixin Strong {
final double strengthLevel = 1100.89;
}
mixin QuickRunner {
void runQuick() {
print("Runnnn!");
}
}
class Human {
final int phoneNumber;
Human({required this.phoneNumber});
void sayHello() {
print("Hello, my phone number is $phoneNumber.");
}
}
enum Team { blue, red }
class Player with Strong, QuickRunner {
final Team team;
Player({
required this.team,
required int phoneNumber,
}) : super();
void sayHello() {
print("And I am on the $team team.");
}
}
void main() {
var player = Player(team: Team.blue, phoneNumber: 01011112222);
player.sayHello();
player.runQuick();
}
'Dart' 카테고리의 다른 글
Dart 기초 - 변수와 타입 (1) (0) | 2024.04.24 |
---|---|
Dart 기초 - Dart와 Flutter (0) (0) | 2024.04.24 |
Dart Class - (6) (0) | 2023.09.04 |
Dart Typedef - (5) (0) | 2023.09.02 |
Dart Functions - (4) (0) | 2023.09.02 |