Dart class1

이제우·2024년 10월 6일

Class

일단 dart로 간단한 class를 만들어본다.

class Player {
	final String name = 'jinjin';
    int age = 25;
    String country = 'seoul';
}

void main(){
	var player1 = Player();
    
    print(player1.name); // jinjin
}

간단하게 player를 만들어주는 class를 만들었지만 모든 player가 같은 정보를 갖고 있을 것이다.

Constructors

이번엔 각각 다른 player가 될 수 있도록 생성자를 추가해본다.

class Player {
	late final String name; // 변수의 값을 생성자로 나중에 할당하기 때문에 late를 사용
    late int age;
    late String country;
    
    Player(String name, int age, String country){
    	this.name = name;
        this.age = age;
        this.country = country;
    }
}

void main(){
	var player1 = Player('jinjin', 25, 'seoul'); // 생성자가 생겼기에 매개변수를 추가해준다.
    
    print(player1.name); // jinjin
}

이렇게 생성자를 추가하여 각각 다른 정보의 player를 만들 수 있게 되었다.

dart는 여기서 조금 더 간결하게 작성할 수 있다.

class Player {
	final String name;
    int age;
    String country;
    
    Player(this.name, this.age, this.country,);

}

void main(){
	var player1 = Player('jinjin', 25, 'seoul');
    
    print(player1.name); // jinjin
}

이렇게 사용하면 late도 필요 없어지고 생성자도 간결해진다.

Named Constructor Parameters

class Player {
	final String name;
    int age;
    String country;
    
    Player(this.name, this.age, this.country,);

}

void main(){
	var player1 = Player('jinjin', 25, 'seoul');
    
    print(player1.name); // jinjin
}

var player1 = Player('jinjin', 25, 'seoul');을 보면 매개변수로 받고 있는 값이 무엇을 뜻하는지 알기 힘들다.

이런 경우 함수와 똑같이 named 해주는 방법이 있다.

class Player {
	final String name;
    int age;
    String country;
    
    Player({required this.name, required this.age, required this.country,});
	// null-safety를 위해 required 또는 defalut value를 명시해야한다.
}

void main(){
	var player1 = Player(name: 'jinjin', age: 25, country: 'seoul');
    // 매개변수마다 항목에 대한 명칭을 알 수 있다.
    print(player1.name); // jinjin
}

Named Constructors

이번엔 대구사람을 생성하는 생성자를 만들어본다.

class Player {
  final String name;
  int age;
  String country;

  Player({
    required this.name,
    required this.age,
    required this.country,
  });
  
  Player.makeDaegu({
    required String name,
    required int age,
  })  : this.name = name,
        this.age = age,
        this.country = "deagu"; // country를 매개변수로 초기화 하지 않는다.
}

void main() {
  // 명명된 매개변수로 전달
  var player1 = Player.makeDaegu(name: 'jinjin', age: 25);

  print(player1.name);  // 출력: jinjin
}

매개변수로 초기화 하지 않기 때문에 makeDaegu 매서드에서는 : 을 사용해 초기화를 해주어야한다.

dart에서는 :을 사용하면 속성이 일괄 초기화 된다.

profile
게으른 사람 중에 제일 부지런하게 사는 사람이 꿈

0개의 댓글