728x90
//method - function (class 내부에 있는 함수)
즉 클레스 내부에 함수가 있으면 그걸 메서드라고 부름 어떤 OOP 에서도 마찮가지임
// override - 덮어쓰다 (우선시 하다)
override는 상속 받은 자식에서 가능 한거임
void main() {
TimesTwo tt = TimesTwo(2);
print(tt.calculate());
TimesFour tf = TimesFour(2); // 부모꺼 이용 가능
print(tf.calculate());
}
//method - function (class 내부에 있는 함수)
// override - 덮어쓰다 (우선시 하다)
class TimesTwo{
final int number;
TimesTwo(
this.number, // 생성자 간단한 문법 바로 값을 this 클레스 안 number 변수로 바로 값 넣음
);
int calculate(){
return number *2;
}
}
class TimesFour extends TimesTwo{
TimesFour(
int number
) : super(number); // 부모생성자에도 바로 값 넣음
}
그래서 둘다 현제 2넣으면 그 값에 2를 곱한 값을 반환 하는것을 확인 할수 있음
근데 만약 자식놈에서 int calculate(){} 라는 똑같은 시그니처 함수를 작성하면 자식에서 부모 클레스에 정의된 함수를
override - 덮어쓰다 (우선시 하다) 할수 있는것임
void main() {
TimesTwo tt = TimesTwo(2);
print(tt.calculate());
TimesFour tf = TimesFour(2); // 자식에서 override - 덮어쓰다 한거 이용
print(tf.calculate());
}
//method - function (class 내부에 있는 함수)
// override - 덮어쓰다 (우선시 하다)
class TimesTwo{
final int number;
TimesTwo(
this.number, // 생성자 간단한 문법 바로 값을 this 클레스 안 number 변수로 바로 값 넣음
);
int calculate(){
return number *2;
}
}
class TimesFour extends TimesTwo{
TimesFour(
int number
) : super(number);
@override // 즉 매소드 덮으쓰는거임
int calculate(){
return super.number * 4; // 요게 정석임
// 부모거에 * 4 결론적으로 생성자를 통해 값 을 부모에서 선언한 변수로 넣고 그 값에 *4로 만들어 준거임
// return this.number * 4; 이렇게 해도됨 그냥 자식에도 저장되는거라 이렇게 사용 해도 무방
// super.calculate() * 2; 이런식으로도 작성 가능함 (부모 꺼 이용) 즉 부모것을 활용하려고 하면 이렇게도 가능
}
}
super.calculate() * 2; 이렇게 쓰면 부모것을 활용해서 새로운 로직을 구현할때 편함 이렇게 해주면 나중에 부모 계산 기능이 복잡하다면 코드를 효율적으로 줄일수도 있을것임
728x90
'APP > Dart' 카테고리의 다른 글
dart 객체지향 프로그래밍 Interface 란? , 상속과 차이, abstract란? (0) | 2022.08.16 |
---|---|
dart 객체지향프로그래밍 static 키워드란?, 인스턴스에 귀속, 클레스에 귀속된다는 건 무슨 말인가? (0) | 2022.08.16 |
dart 객체지향 프로그래밍 상속 (Inheritance) 눈물주의.. (0) | 2022.08.16 |
dart 객체지향 프로그래밍 Private 속성 (0) | 2022.08.16 |
dart 객체지향 프로그래밍 Getter and Setter (0) | 2022.08.16 |