객체란?
데이터(속성)와 기능(메서드)를 모두 포함한, 독립적으로 실행할 수 있는 최소한의 단위
예를 들면 Airplane airplane = Airplane ();이다.
속성이란?
속성은 객체가 가지고 있는 고유 값이다. 이 말은 객체 안의 고정적으로 들어가 있는 변수의 값을 의미한다.
메서드란?
객체의 속성을 변경하는 통로이다.
생성자란?
객체를 생성할 때 반드시 호출되는 기능(메서드)이다. 데이터(속성)을 초기화 시키는 역할을 한다.
void main() {
// 객체를 생성하고 각각의 생성자를 통해 다른 속성값을 출력하게 나타내였다.
// 이를 통해서 객체의 값에 따라 다른 데이터를 갖고 올 수 있다는 것을 알 수 있었고,
// 차후에 상속이라는 개념과 다양성에 대해서 설명하도록 하겠다.
Airplane airplane = Airplane('생성자를 사용한 기본비행기 입니다.'); //객체생성
airplane.airplaneFeature();
Airplane propellerAirplane = Airplane('생성자를 사용한 프로펠러 비행기 입니다.'); //객체생성
propellerAirplane.airplaneFeature();
}
class Airplane {
String airplaneName; //속성, 데이터
Airplane(this.airplaneName);
void airplaneFeature() { //메서드, 함수
print("$airplaneName 입니다.");
}
}
상속이란?
부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 것이다.
void main() {
Airplane airplane = Airplane();
airplane.airplaneFeature();
// PropellerAirplane은 Airplane의 자식으로 선언문에 부모 클래스를 작성 할 수있다.
// 이것은 다형성을 구성하는데 큰 역할을 한다. 다형성은 밑에 서술 하도록 하겠다.
Airplane propellerAirplane = PropellerAirplane();
propellerAirplane.airplaneFeature();
}
class Airplane {
String? _airplaneName;
Airplane() {
_airplaneName = "기본 비행기";
}
void airplaneFeature() {
print("$_airplaneName 입니다.");
}
}
// 부모 클래스 Airplane을 상속 받아서 부모의 값을 사용하는 것을 확인 할 수 있다.
// 1. extends를 사용해서 Airplane을 상속 받았다.
// 2. super._airplaneName 부모의 속성값을 사용하였다.
class PropellerAirplane extends Airplane {
PropellerAirplane() {
super._airplaneName = "프러펠러 비행기";
}
}
다형성이란?
하나의 객체가 여러가지 타입을 가질 수 있는 것
void main() {
// 여기서 추가로 SuperHightechOnDefaultCockPit객체를 고객사가 원한다면
// 해당하는 객체를 생성 해서 넣어 주기만 하면 끝난다.
Airplane airplane = Airplane(HightechOnDefaultCockpit());
airplane.airplaneFeature();
airplane.chairValue();
}
class Airplane {
String? _airplaneName;
DefaultCockpit? _defaultCookpit;
// 포인트는 비행기 객체에서 부모의 값으로 변수를
// 선언해야지 소스코드를 유언하게 할 수 있다는 점이다.!
Airplane(DefaultCockpit defaultCookpit) {
_airplaneName = "기본 비행기";
_defaultCookpit = defaultCookpit;
}
// 비행기 기체 로직
void airplaneFeature() {
print("$_airplaneName 입니다.");
}
// 비행기 의자 값
void chairValue() {
_defaultCookpit!.chairValue();
}
}
//조종석
class DefaultCockpit {
int? _chairFunction;
DefaultCockpit() {
_chairFunction = 50;
}
int? chairFeature() {
print('기본 의자압니다.');
return _chairFunction;
}
void chairValue() {
print("의자값은 $_chairFunction입니다.");
}
}
// 높은 기술 조종석
class HightechOnDefaultCockpit extends DefaultCockpit{
@override
int? chairValue() {
_chairFunction = 150;
print("의자값은 $_chairFunction입니다.");
return _chairFunction;
}
}
// 고객사가 superhightechOnDefaultCockpit가 필요하다가 요청이 들어오면 객체를
// ovrride해서 구현만 하면 메인에서 언제든지 사용할 수 있다.
class SuperHightechOnDefaultCockpit extends DefaultCockpit{
@override
int? chairValue() {
_chairFunction = 150;
print("의자값은 $_chairFunction입니다.");
return _chairFunction;
}
}
'플루터' 카테고리의 다른 글
Flutter 설명 변경 (0) | 2022.02.08 |
---|---|
Flutter chapter-04-04 OX퀴즈 showDialog 사용 (0) | 2022.02.08 |
Flutter chapter-04-02 OX퀴즈 조건문 (0) | 2022.01.30 |
Flutter chapter-04-01 OX퀴즈 만들기 (0) | 2022.01.30 |
Flutter chapter-03-08 그림 맞추기 완료 (0) | 2022.01.25 |