Design-loving front-end engineer
Ryong
Design-loving front-end engineer
전체 방문자
오늘
어제
    • Framework
    • React
      • Concept
      • Library
      • Hook
      • Component
      • Test
    • NodeJS
    • Android
      • Concept
      • Code
      • Sunflower
      • Etc
    • Flutter
      • Concept
      • Package
    • Web
    • Web
    • CSS
    • Language
    • JavaScript
    • TypeScript
    • Kotlin
    • Dart
    • Algorithm
    • Data Structure
    • Programmers
    • Management
    • Git
    • Editor
    • VSCode
    • Knowledge
    • Voice
Design-loving front-end engineer

Ryong

Dart

[ Dart ] 객체 지향 프로그래밍

2021. 12. 21. 10:35

인스턴스 생성

💬  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
    'Dart' 카테고리의 다른 글
    • [ Dart ] 함수형 프로그래밍
    • [ Dart ] 컬렉션
    • [ Dart ] 분기와 반복
    • [ Dart ] 함수
    Design-loving front-end engineer
    Design-loving front-end engineer
    디자인에 관심이 많은 모바일 앱 엔지니어 Ryong입니다.

    티스토리툴바