개발자가 되고 싶은 개발자

Dart 클래스와 인터페이스 본문

Dev/Flutter

Dart 클래스와 인터페이스

Fullth 2024. 3. 31. 16:23

Dart 기본 문법 정리에 이어 Dart에서 Class를 어떻게 사용하는지 정리한다

 

Dart 기본 문법 빠르게 정리

배열의 인덱스에 접근하는 방법과 같이 프로그래밍 언어의 일반적인 사항은 작성하지 않음. Dart 언어 소개 Dart 프로그램과 주요 개념에 대한 간결한 소개. dart-ko.dev main 최상위 main 함수를 갖음출

fullth.tistory.com

 

객체 생성

new 연산자는 생략이 가능하다

void main() {
  Car myCar = Car();
  myCar.catalog();
}

class Car {
  String brand = 'Hyundai';
  String name = 'Genesis G80';
  
  void catalog() {
    print('${brand} ${name}');
  }
}

 

생성자

일반적인 문법과 약간 상이하다

this.name = name와 같은 부분을 생략 가능하다

class Car {
  String brand;
  String name;
  
  Car(String brand, String name)
    : this.brand = brand,
      this.name = name;
  
  void catalog() {
    print('${this.brand} ${this.name}');
  }
}

class Car {
  String brand;
  String name;
  
  Car(this.brand, this.name);
  
  void catalog() {
    print('${this.brand} ${this.name}');
  }
}

 

네임드 생성자

이름있는 생성자를 작성할 수 있다

여러 타입의 객체를 생성하고 싶을 때 활용 가능하다

void main() {
  List genesis = ["Hyundai", "Genesis"];
  Car brochure = Car.fromList(genesis);
  brochure.catalog();
}

class Car {
  String brand;
  String name;

  Car(this.brand, this.name);
  Car.fromList(List values)
      : this.brand = values[0],
        this.name = values[1];

  void catalog() {
    print('${this.brand} ${this.name}');
  }
}

 

Getter

setter도 동일하게 set으로 사용가능하지만, immutable programming을 추구하는 최근의 패러다임에서는 별로 사용하지 않는다.

void main() {
  Car myCar = Car("Hyundai", "Genesis GV80");
  print(myCar.getBrand);
}

class Car {
  String brand;
  String name;

  Car(this.brand, this.name);

  void catalog() {
    print('${this.brand} ${this.name}');
  }

  String get getBrand {
    return this.brand;
  }

 

Private

js는 관례적으로 변수에 _(underscore)를 붙이지만, Dart에서는 문법적으로 동작한다

class _PrivateCar {
  String _name;
  
  _PrivateCar(this._name);
}

 

 

Dart Private Fields

In this tutorial, you'll learn how to create Dart private fields of a class by prefixing variables with an underscore.

www.darttutorial.org

 

Interface

다른 언어들과 다르게 Interface 키워드가 존재하지 않고, 동일하게 class를 사용한다.

다행히, 동일하게 implements를 사용하는 것으로 구분한다.

추상클래스는 동일하게 abstract 키워드를 사용한다.

 

class Cat implements Animal {
  String name;
  Lecture(this.name);
}

abstract class Animal {
  String name;
  
  Animal(this.name);
}

 

'Dev > Flutter' 카테고리의 다른 글

Flutter 설치 (mac)  (0) 2024.04.03
Dart 비동기 프로그래밍 (Future, async, await, stream)  (0) 2024.04.02
Dart 기본 문법 빠르게 정리  (0) 2024.03.30