공부내용

dart문법_메서드, 생성자, 제네릭클래스

골목코딩 2024. 10. 30. 16:47

메서드

 

객체 의 동작 을 정의하는 함수

메서드 는 클래스 에 의존하고, 함수 는 클래스 에 의존하지 않는다는 차이가 있음

 

인스턴스 메서드 (Instance Method)

class Person {
  String name = '홍길동';
  int age = 25;
  
  void printName() {
    print(name);
  }
  
  void printNameAndAge() {
    this.printName();
    print(age);
  }
}

 

 

정적 메서드 (Static Method)

: 인스턴스 변수 사용 불가.

 

class Circle {
static double pi = 3.14159;
double radius = 0;

  static void printPi() {
  print(pi);
  }
  
  void printRadius() {
    print(radius);
  }
}

void main() {
Circle.printPi(); // 3.14159
Circle.printRadius(); // 오류 발생
}

 

 

생성자

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

 

기본 생성자 (Default Constructor)

: 기본 생성자. 생략해도 됨.

[클래스 이름]();

 

class Car {
  Car(); 
}

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

 

 

매개변수 생성자 (Parameterized Constructor)

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

  객체 생성할 때 매개변수 를 넣지 않으면 오류가 나요

 

[클래스 이름]([타입] [매개변수 이름]) : this.변수;

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

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

 

 

네임드 생성자 (Named Constructor)

pass(많이 사용하지 않을것같음)

 

 

 

제네릭 클래스 (Generic Class)

: 특정 타입에 의존하지 않고, 여러 타입에 대해 동일한 코드를 적용할 수 있어서 재사용성 높은 코드를 짤 수 있음.

 

class Box<T> {
  T value;

  Box(this.value);

  T getValue() {
    return value;
  }
}

void main() {
  var intBox = Box<int>(10);
  print(intBox.getValue()); // 10

  var stringBox = Box<String>('Hello');
  print(stringBox.getValue()); // Hello
}