본문 바로가기
FullStack/23. Dart

Dart(다트) - as(타입캐스팅), is(타입 체크)

by nakanara 2023. 4. 14.
반응형

 

Dart에서 as와 is는 타입 캐스팅과 타입 체크를 수행하는 연산자입니다.

as 타입 캐스팅

as 연산자는 객체의 타입을 다른 타입으로 변환합니다. 변환할 타입이 객체의 실제 타입과 호환되지 않으면, CastError 예외가 발생합니다.

class Person {  
  void introduce() {  
    print('Hello, I am a person.');  
  }  
}  

class Student extends Person {  
  void study() {  
    print('I am studying.');  
  }  
}  

void main() {  
  Person person = Student();  
  Student student = person as Student;  
  student.introduce(); // 출력: Hello, I am a person.  
  student.study(); // 출력: I am studying.  
}  

person 변수는 Person 클래스의 객체를 참조하고 있습니다. 이 객체를 Student 클래스의 객체로 캐스팅하기 위해 as 연산자를 사용했습니다. 이 코드에서는 CastError 예외가 발생하지 않습니다. 이는 person 변수가 실제로 Student 클래스의 객체를 참조하고 있기 때문입니다.

is (타입 체크)

is 연산자는 객체가 특정 타입에 속하는지를 검사합니다. is 연산자를 사용하여 객체가 특정 타입에 속하는지 검사한 후, 객체를 해당 타입으로 캐스팅할 수 있습니다.

class Person {  
  void introduce() {  
    print('Hello, I am a person.');  
  }  
}  

class Student extends Person {  
  void study() {  
    print('I am studying.');  
  }  
}  

void main() {  
  Person person = Student();  
  if (person is Student) {  
    Student student = person as Student;  
    student.introduce(); // 출력: Hello, I am a person.  
    student.study(); // 출력: I am studying.  
  }  
}  

person 변수는 Person 클래스의 객체를 참조하고 있습니다. is 연산자를 사용하여 person 변수가 Student 클래스의 객체를 참조하는지 검사한 후, 객체를 Student 클래스의 객체로 캐스팅합니다. 이 코드에서도 CastError 예외가 발생하지 않습니다.

반응형

'FullStack > 23. Dart' 카테고리의 다른 글

Dart(다트) - Metadata(메타데이터, annotaion 어노테이션)  (0) 2023.04.19
Dart(다트) - 연산자  (0) 2023.04.16
Dart(다트) - 변수  (0) 2023.04.14
Dart(다트) 언어란?  (1) 2023.04.14