클래스
포스트
취소

클래스

클래스란?

  • Dart에서 객체를 정의하는 틀 또는 설계도
  • 구성
    • 필드(field)
      • 객체의 상태
      • 클래스에 포함된 변수
    • 메소드(method)
      • 객체의 행동
      • 어떠한 특정 작업을 수행하기 위한 명령문의 집합

인스턴스란?

  • 선언된 해당 클래스 타입의 객체
  • 메모리에 할당된 객체
  • 하나의 클래스로부터 여러 개의 인스턴스를 생성할 수 있다.
  • 인스턴스는 독립된 메모리 공간에 저장된 자신만의 필드를 가질 수 있다.
  • 해당 클래스의 모든 메소드(method)는 해당 클래스에서 생성된 모든 인스턴스가 공유하게 된다.

클래스의 인스턴스화란?

  • 클래스로부터 객체를 선언하는 과정
  • Java에서 클래스를 사용하기 위해서는 해당 클래스 타입의 객체를 선언해야 한다.

클래스 정의 방법

class 클래스이름 {
    필드1의타입 필드1의이름;
    필드2의타입 필드2의이름;
    ...
    메소드1의 원형
    메소드2의 원형
    ...
};

인스턴스의 생성 방법

/원형
클래스명 변수명 = new 클래스명();

//예시
Car myCar = new Car();

생성자란?

  • 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있는 메소드
  • Dart에서 생성자의 이름은 해당 클래스의 이름과 같아야 한다.
  • 특징
    • 생성자는 반환값이 없지만 반환 타입을 void형으로 선언하지 않는다.
    • 생성자는 초기화를 위한 데이터를 인수로 전달받을 수 있다.
    • 객체를 초기화하는 방법이 여러 개 존재할 경우에는 각 경우에 대한 생성자 메소드를 만들어야 한다.
//매개변수가 없는 생성자
클래스명 {
    클래스명() {
        //초기화 내용
    }
}

//매개변수가 있는 생성자
클래스명 {
    자료형 변수명1;
    자료형 변수명2;
    자료형 변수명3;
    ...

    클래스명({
        required this.변수명1,
        required this.변수명2,
        required this.변수명3,
        ...
    });
}

//초기화 목록이 있는 생성자
//초기화 목록은 생성자 바디가 실행되기 전에 인스턴스 변수를 설정한다.
//예시
Square.fromJson(Map<String, double> json)
    : width = json['width']!,
      height = json['height']! {
  print('In Square.fromJson(): ($width, $height)');
}

//팩토리 생성자
/*
    - 해당 클래스의 인스턴스를 매번 생성하지 않아도 된다.
    - 보통 자식 클래스의 인스턴스를 리턴 받는다.
*/
//예시
class Car {
  String name = "";

  factory Car.fromJson(Map<dynamic, dynamic> json) {
    try {
      return CommonCodeDO(
        name: json['name'] ?? "",
      );
    } catch (e) {
      print(e.toString());
      return Car.empty();
    }
  }
}
class Car {
    String name = "";

    Car(){
        this.name = "미출시";
        print(name);
    }
}

### this 참조 변수

- 인스턴스가 바로 자기 자신을 참조하는  사용하는 변수
- 해당 인스턴스의 주소를 가리킨다.
Car car = new Car(); //출력 : 미출시
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.