class Circle{
static double pi = 3.14;
double radius = 0;
}
void main(){
print(Circle.pi);
print(Circle.radius); -> 오류 발생.
}
static은 정적 변수로 클래스의 이름으로 접근할 수 있으나 radius는 불가
-> 객체를 생성해줘야 함.
정적변수는 객체,this를 통해 접근할 수 없음
객체마다 개별적인 값을 갖지 않고 모든 객체가 서로 값을 공유
class Circle{
static double pi = 3.14;
double radius = 0;
}
void main(){
print(circle.pi);
Circle circle = Circle();
print(circle.radius) -> 접근가능!
}
정적 메소드 안에서는 정적 변수만 쓸 수 있다.
인스턴스 메소드 안에서는 정적 변수 쓸 수 있다.
매개변수 생성자
class Car {
String name;
List<String> models;
Car(this.name, this.models);
}
Car에서 초기화 해주는 것
클래스와 메서드
class Person{
String name='';
int age = 0;
void printName(){
print(name);
}
void printNameAndAge(){
printName();
print(age);
}
static void printNewname(){
print(3);
}
}
void main(){
Person suhyun = Person();
suhyun.name = 'suhyun';
suhyun.age=27;
print(suhyun.name);
suhyun.printName();
Person.printNewname();
}
static으로 선언된 메서드는 클래스의 이름으로 접근 가능. 객체로 접근 불가. this를 통해 접근할 수 없음. 인스턴스변수(예:name, age) 사용할 수 없음
그 외 인스턴스 메서드는 클래스의 이름으로 접근 불가. 객체 생성 후 객체 호출하여 접근 가능, 인스턴스 변수 쓸 수 있음.
생성자: 객체를 생성하고 초기화하기 위해 사용하는 특수한 메서드
class Car {
Car(); -> 기본 생성자 생략 가능
}
void main() {
Car car = Car();
}
인스턴스 변수들이 모두 초기화되어 있어야 함.
매개변수 생성자: 매개변수를 통해 외부에서 인스턴스 변수들의 초기값을 설정
class Car {
String name;
List<String> models;
Car(String name, List<String> models)
: this.name = name,
this.models = models;
}
class Car {
String name = '';
List<String> models = [];
Car(String name, List<String> models) {
this.name = name;
this.models = models;
}
}
객체 생성할 때 매개변수 넣지 않으면 오류 발생
네임드 생성자: 클래스 메서드와 같은 형식으로 호출하는 생성자
class Car {
String name;
List<String> models;
Car.fromList(List values)
: this.name = values[0],
this.models = values[1];
void speakName() {
print('저희는 $name 입니다 !');
}
void speakModels() {
print('$models 모델을 가지고 있습니다 !');
}
}
void main() {
Car car = Car.fromList([
'BMW',
['320i', '340i', 'M3']
]);
car.speakName(); // 저희는 BMW 입니다 !
car.speakModels(); // [320i, 340i, M3] 모델을 가지고 있습니다 !
}
'TIL' 카테고리의 다른 글
[TIL] 예외/오류 (0) | 2024.11.01 |
---|---|
[TIL] 콘솔 쇼핑몰 만들기 (0) | 2024.10.31 |
[TIL] dart 문법 함수 (0) | 2024.10.29 |
[TIL] Dart 문법 기초 (0) | 2024.10.28 |
[TIL] 5주차 메모 앱 개발 (1) | 2024.10.25 |