본문 바로가기
TIL

[TIL] dart 클래스

by chengzior 2024. 10. 30.

 

 

class Circle{
	static double pi = 3.14;
    double radius = 0;
}
void main(){
	print(Circle.pi);
    print(Circle.radius); -> 오류 발생. 
}

static은 정적 변수로 클래스의 이름으로 접근할 수 있으나 radius는 불가
-> 객체를 생성해줘야 함.

정적변수는 객체,this를 통해 접근할 수 없음
객체마다 개별적인 값을 갖지 않고 모든 객체가 서로 값을 공유

class Circle{
	static double pi = 3.14;
    double radius = 0;
}
void main(){
	print(circle.pi);
    
    Circle circle = Circle();
    print(circle.radius) -> 접근가능!
}

 

정적 메소드 안에서는 정적 변수만 쓸 수 있다.

인스턴스 메소드 안에서는 정적 변수 쓸 수 있다.

 

매개변수 생성자

class Car {
	String name;
	List<String> models;
  
  Car(this.name, this.models);
}

Car에서 초기화 해주는 것

 

클래스와 메서드

class Person{
  String name='';
  int age = 0;
  
  void printName(){
    print(name);
  }
  void printNameAndAge(){
    printName();
    print(age);
  }
  static void printNewname(){
    print(3);
  }
  
}
void main(){
  Person suhyun = Person();
  suhyun.name = 'suhyun';
  suhyun.age=27;
  print(suhyun.name);
  suhyun.printName();
  Person.printNewname();
  
}

static으로 선언된 메서드는 클래스의 이름으로 접근 가능. 객체로 접근 불가. this를 통해 접근할 수 없음.  인스턴스변수(예:name, age) 사용할 수 없음

그 외 인스턴스 메서드는 클래스의 이름으로 접근 불가. 객체 생성 후 객체 호출하여 접근 가능, 인스턴스 변수 쓸 수 있음.

 

생성자: 객체를 생성하고 초기화하기 위해 사용하는 특수한 메서드

class Car {
	Car(); -> 기본 생성자 생략 가능
  
}

void main() {
	Car car = Car();
}

인스턴스 변수들이 모두 초기화되어 있어야 함.

 

매개변수 생성자: 매개변수를 통해 외부에서 인스턴스 변수들의 초기값을 설정

class Car {
  String name;
  List<String> models;

  Car(String name, List<String> models)
      : this.name = name,
        this.models = models;
}
class Car {
  String name = '';
  List<String> models = [];

  Car(String name, List<String> models) {
    this.name = name;
    this.models = models;
  }
}

객체 생성할 때 매개변수 넣지 않으면 오류 발생

 

네임드 생성자: 클래스 메서드와 같은 형식으로 호출하는 생성자

class Car {
  String name;
  List<String> models;

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

  void speakName() {
    print('저희는 $name 입니다 !');
  }

  void speakModels() {
    print('$models 모델을 가지고 있습니다 !');
  }
}

void main() {
  Car car = Car.fromList([
    'BMW',
    ['320i', '340i', 'M3']
  ]);
  car.speakName(); // 저희는 BMW 입니다 !
  car.speakModels(); // [320i, 340i, M3] 모델을 가지고 있습니다 !
}

 

'TIL' 카테고리의 다른 글

[TIL] 예외/오류  (0) 2024.11.01
[TIL] 콘솔 쇼핑몰 만들기  (0) 2024.10.31
[TIL] dart 문법 함수  (0) 2024.10.29
[TIL] Dart 문법 기초  (0) 2024.10.28
[TIL] 5주차 메모 앱 개발  (1) 2024.10.25