Dart Class 특징

Ruinak·2021년 9월 22일
0

Dart

목록 보기
7/11
post-thumbnail

class

class의 개념

  • 아래는 Dog라는 클래스입니다.
class Dog {
  var name = "재롱이";
  var age = 11;
  var color = "하얀색";
}

1. dart의 모든 것들은 1급 객체입니다.

  • 1급 객체라면 함수의 파라미터로 전달될 수 있어야 합니다.

2. class는 여러가지 데이터를 저장할 수 있다.

  • 클래스는 아래와 같은 형태이며 클래스에는 여러 개의 변수를 담을 수 있습니다.
  • 여러 가지 데이터를 담기 위해서는 클래스를 사용해야 합니다.
  • class의 변수들은 클래스를 표현하는 데이터로 프로퍼티 or 속성이라 합니다.

3. class는 메모리에 뜨지 않는다.

  • 자동으로 메모리에 뜨지 않습니다.

4. class는 개발자가 직접 메모리에 올려야 합니다.

  • class는 Object라고 부릅니다.
// 클래스

// 1. dart의 모든 것들은 1급 객체입니다.
// 1급 객체라면 함수의 파라미터로 전달될 수 있어야 합니다.
// 2. class는 여러가지 데이터를 저장할 수 있다.
// 클래스는 아래와 같은 형태이며 클래스에는 여러 개의 변수를 담을 수 있습니다.
// 여러 가지 데이터를 담기 위해서는 클래스를 사용해야 합니다.
// 3. class는 메모리에 뜨지 않는다.(자동으로 메모리에 뜨지 않습니다)
// 4. class는 개발자가 직접 메모리에 올려야 합니다.


// class는 Object라고 부릅니다.
class Dog {
  // 아래 변수들은 클래스를 표현하는 데이터로 프로퍼티 or 속성이라 합니다.
  var name = "재롱이";
  var age = 11;
  var color = "하얀색";

  void sound(){
    print("멍멍");
  }
}

// main( )이 실행되기 전부터 메모리에 뜨므로 찾을 수 있음
var name = 10;

main(){
  // new가 됐다는 것은 메모리에 로드됐다는 뜻입니다.
  // 메모리에 로드된 Object를 인스턴스라고 부릅니다.
  Dog dog1 = new Dog();
  print(dog1.name);  
  dog1.sound();
  Dog dog2 = new Dog();
  Dog dog3 = new Dog();
  Dog dog4 = new Dog();
}

class의 특징

캐스케이드 연산자( .. )

..(캐스케이드 연산자)를 사용하면 메모리에 띄움과 동시에 함수를 호출시킬 수 있습니다.

인스턴스를 만들 때 케스케이드 연산자를 사용 가능

// dart의 class 특징

class Animal {
  void hello(){
    name = "식물";
  }

  var name = "동물";
}

class User {
  var id;
  var name;
  var phone;
}

main(){
  // ..(캐스케이드 연산자)를 사용하면 메모리에 띄움과 동시에 함수를 호출시킬 수 있습니다.
  Animal animal1 = new Animal()..hello();
  print(animal1.name);

  Animal animal2 = new Animal()..name = "사자";
  print(animal2.name); 

  // 인스턴스를 만들 때 케스케이드 연산자를 사용 가능
  User user = new User()
  ..id = 1
  ..name = "김독자"
  ..phone = "01012345678";
  print(user.id);
  print(user.name);
  print(user.phone);
}

오버로딩 불가능

// dart의 class 특징

class Animal {
  void hello(){
    name = "식물";
  }

  var name = "동물";
}

class User {
  var id;
  var name;
  var phone;

  User(){
    id = 2;
  }

  // 오버로딩 불가능
  // User(var name) {
  // 
  // }

  // 이름이 있는 생성자
  User.second(){
    id = 5;
    name = "유중혁";
    phone = "01023456789";
  }
}

main(){
  // ..(캐스케이드 연산자)를 사용하면 메모리에 띄움과 동시에 함수를 호출시킬 수 있습니다.
  Animal animal1 = new Animal()..hello();
  print(animal1.name);

  Animal animal2 = new Animal()..name = "사자";
  print(animal2.name); 

  // 케스케이드 연산자
  User user = new User()
  ..id = 1
  ..name = "김독자"
  ..phone = "01012345678";
  print(user.id);
  print(user.name);
  print(user.phone);

  User user2 = new User.second();
  print(user2.name);
}

생성자를 추가적으로 따로 선언해서 사용해야함

profile
Nil Desperandum <절대 절망하지 마라>

0개의 댓글