class {
속성: 액정, 카메라 모듈, 홈버튼, 스크린
기능: 전화 걸기, 사진찍기, 인터넷 검색
}
이렇게 만들어진 class를 인스턴스라고 부름
클래스란?
객체란?
인스턴스란?
// 클래스명은 대부분 대문자로 시작
class Person {
// 클래스에서 정의된 변수를 멤버변수라고 부름
late String name; // var 타입추론 키워드
late int age;
late String sex;
// 생성자, ()안에 아규먼트 정의시 인스턴트 생성시 아규먼트 입력 필요
// 단, 네임드 아규먼트 설정 {} 시 아규먼트 임의 입력 가능
Person(String name, int age, String sex) {
// 클래스 속성의 변수명과 생성자 아규먼트의 변수명이 모두 똑같은 경우 this 붙임
this.name = name;
this.age = age;
this.sex = sex;
}
}
// dart는 타입추론언어로 앞에 자료형을 명시해주지 않을 수 있음
// addNumber 앞에 void 타입 넣으면 오류 (void는 반환하지 않는 함수타입)
addNumber(int num1, int num2) {
return num1 + num2;
}
void main() {
// 클래스 Person, 인스턴스 p1, 키워드 new(생략가능), 생성자 Person
Person p1 = Person('tom', 30, 'male');
Person p2 = Person('jenny', 27, 'female');
// 네임드 아규먼트 설정시 아래와 같이 특정 아규먼트만 입력 가능
// Person p1 = new Person(age:30);
// Person p2 = new Person(sex:'male');
print(p1.age);
print(p2.name);
print(addNumber(3, 4));