클래스에 대해서 나름 잘 알고 있다고 생각했는데,
막상 플러터에서 다양한 위젯들과 StatelessWidget, StatefulWidget을 접하다 보니
Class에 대해 다시 복기해야 겠다는 생각이 들었다.
Class란 무엇일까?
정확하게 Class란 무엇일까.
클래스는 객체를 만들어내기 위한 '틀' 과 같다.
객체를 만들어내기 위한 틀을 쉽게 이해하기 위해서,
인간이라는 예시에 이를 대입해보도록 한다.
인간의 구성 요소가 뭐가 있을까..
이름, 나이, 성별, 그리고 간단한 인사로 인간 class를 만들어보자.
Class 내에서 변수 선언하기
이름, 나이, 성별은 변수이다.
class Human {
String name = '이지원';
Bool male = 'True';
int age = 16;
}
변수의 타입과 이름을 지정해 선언할 수 있다.
Class 내에서 함수 선언하기
class Human {
void sayHello() {
print("안녕하세요?");
}
}
함수의 선언도 간단하게 해줄 수 있다.
객체 생성하기 (instance란?)
Class는 객체의 생성을 통해 사용할 수 있다.
Class, 즉 틀에 형식에 따르는 객체를 생성하면 되는데 이때 클래스 형식에 따르는 객체를
인스턴스 (instance) 라고 한다.
인스턴스는 메모리에 할당된 객체를 의미한다.
객체의 생성은 다음과 같이 할 수 있다.
void main () {
Human jiwon = Human();
}
객체가 이렇게 생성이 되고 나면, 클래스에 선언한 변수와 함수를 호출할 수 있게 된다.
객체에서 변수와 함수 호출하기
다음과 같이 객체를 생성한 후 객체 이름 뒤에 '.'을 찍으면 객체의 클래스에 선언된 변수와 함수를 볼 수 있다.
다음과 같이 호출하면 된다.
객체의 변수 값 수정하기
객체 변수의 값을 수정하고 싶다면 main에서 수정할 수 있다.
class에 정의되어 있는 객체의 값은 기본값이라고 할 수 있는데, 이 기본값을 노미네이트하여 바꿔준다.
class Human {
String name = '지원';
}
가령 이렇게 선언되어 있었다면
main() {
jiwon.name = '유진';
print(jiwon.name);
}
이렇게 main에서 이것을 부른 뒤 바꾸어주면 된다.
다만 위의 내용은 그저 class의 기초에 관한 내용일 뿐이다.
진짜 class는 생성자의 사용부터이다.
생성자 : constructor
생성자의 사용은 class가 변수의 틀만 잡게 하고, 내부 변수의 요소는 외부에서 받아올 수 있도록 한다.
위에서는 class의 기본값을 선언할 때 동시에 정의하였다. (지정된 속성의 Human만 생성)
하지만 생성자를 사용하면 Human이라는 인스턴스를 마음대로 만들 수 있다.
(내부 속성은 외부에서, 즉 실행할 때 지정해줄 수 있다.
'Dart' 카테고리의 다른 글
[Dart] MapEntry 키워드, Map 요소추가 (0) | 2024.01.29 |
---|