[flutter] class

KoEunseo·2023년 4월 6일
0

flutter

목록 보기
5/45

constructors

class Dog {
  final String name;
  int age;
  
  Dog({this.name, this.age});
  
  void sayHello() {
    print("Hello $name");
  }
}

void main () {
  var seolgi = Dog(
    name: "seolgi",
    age: 4,
  );
}
  • 클래스 내에서 변수를 선언할 때 타입을 꼭 명시해주어야한다.
  • positional 파라미터는 기본적으로 required, named 파라미터는 required일 경우 명시해주어야한다.
  • 파라미터를 required로 설정 할 수 있다.
  • class명.컨스트럭터명 클래스명에 .을 찍어서 constructor를 생성할 수 있다.
  • :를 사용해 디폴트값(초기화)을 줄 수 있다.
class Dog {
  ... 생략...
  Dog.isbaby({
    required String name,
  }) : this.name = name,
       this.age = 0,
}

데이터 .fromJson()

Dog.fromJson(Map<String, dynamic> dogJson)
  : name = dogJson['name'],
    age = dogJson['age'];
    
apiData = [
  {
    "name": "seolgi",
    "age": 4,
  },
  {
    "name": "zero",
    "age": 1,
  },
];

apiData.forEach((dogJson) {
  var dogs = Dog.fromJson(dogJson);
  print(dogs);
});

cascade notation

  • ..을 이용해 cascade notation 사용.
  • 이때 함수 호출 부분에서 세미콜론을 붙이지 않아야한다.
  • cascade의 마지막줄에서 세미콜론으로 마무리.
void main(){
  var seolgi = Player(name: "seolgi", age: 4,)
  ..name = "zero"
  ..age = 1;
}

enum

  • 타입을 지정해놓는다.
  • 이때 enum의 타입에 신경쓰지 않아도 된다. string으로 할 필요 없음.
  • 사용할땐 enum명.옵션
enum Color { pink, white }
class Button {
  Color color;
  Button({
    required this.color,
  })
}
void main () {
  var MainBtn = Button(color: Color.pink)
}

abstract method : 추상화 클래스

  • 말그대로 추상화를 한다.
  • 클래스가 어떤 청사진을 가지고 있어야 하는지 정의.
  • abstract 키워드를 클래스 앞에 적으면 됨.
  • 사용할땐 필요한 곳에서 extends 한다.
  • 추상화한 클래스가 반환하는 메서드를 갖고있어야함. 특정 메서드를 구현하도록 강제한다.
abstract class Dog {
  void bark();
}

상속

  • : super(상속된 무언가)를 통해 상속 대상과 소통할 수 있게 된다.
  • super 생성자를 호출하는 것.
  • required로 설정할 수도 있다.
  • override도 가능 @override 키워드를 적고 그 아래 오버라이딩할 메서드를 작성.
  • 이때 super로 생성자.메서드(); 해서 호출한다.
  • 여기서 오버라이딩은 추가되는것이지 덮어쓰는 건 아니다.(?)
  • print('hello')를 오버라이딩해서 print("i'm $name")하면 'hello i'm seolgi'가 출력(?)

mixin

  • 클래스에 프로퍼티 추가할 때 사용한다. 재사용에 굿
  • 생성자를 가지고있지 않다.
  • with로 연결해 사용한다.
  • class Dog with wait, sit, cute {}
profile
주니어 플러터 개발자의 고군분투기

0개의 댓글