Dart継承
1.継承
1-1基本型
Ssar.dart
// 직원
import 'icecream.dart';
class Ssar {
// 책임 = 아이스크림
// 아이스크림 생산
Icecream makeIcecream(){
return Icecream();
}
}
Cos.dart
// 손님
import 'icecream.dart';
import 'ssar.dart';
class Cos {
var name;
// 책임 = 주문
// 즉 Cos는 주문을 받는 담당
void order(Ssar ssar) {
Icecream icecream = ssar.makeIcecream();
print("아이스크림을 받았습니다.");
}
}
Icecream.dart
main.dart
import 'cos.dart';
import 'ssar.dart';
main(){
// 손님
Cos cos = Cos();
// 직원
Ssar ssar = Ssar();
// 손님이 주문을 하면 직원 아이스크림을 손님에게 줌
cos.order(ssar);
love.order(ssar);
}
顧客と従業員を1~2人追加
love.都道府県の追加
// 새로운 손님
import 'icecream.dart';
import 'ssar.dart';
class Love {
var name;
// 책임 = 주문
// 즉 Cos는 주문을 받는 담당
void order(Ssar ssar) {
Icecream icecream = ssar.makeIcecream();
print("아이스크림을 받았습니다.");
}
}
hoho.都道府県の追加
// 직원
import 'icecream.dart';
class Hoho {
// 책임 = 아이스크림
// 아이스크림 생산
Icecream makeIcecream(){
return Icecream();
}
}
main.dart
import 'cos.dart';
import 'hoho.dart';
import 'love.dart';
import 'ssar.dart';
main(){
// 손님
Cos cos = Cos();
// 직원
Ssar ssar = Ssar();
// 새로운 손님
Love love = Love();
// 새로운 직원
Hoho hoho = Hoho();
// 손님이 주문을 하면 직원 아이스크림을 손님에게 줌
cos.order(ssar);
love.order(ssar);
love.order(hoho);
}
1~3継承の使用
emp.都道府県の追加
// 직원
import 'icecream.dart';
// dart는 interface가 없으므로 abstracet를 추가
abstract class Emp {
// 무효화됨(오버라이드(Override), 자식이 같은 이름의 함수를 들고 있을 때)
Icecream makeIcecream(); // 몸체가 없는 뼈대 추상메서드를 만들 수 있음
}
ssar.都道府県を改める
// 직원
import 'emp.dart';
import 'icecream.dart';
// extends 상속
// Ssar이라고 불릴 수 있고, Emp라고도 불릴 수 있습니다.
// 즉 다형성을 가집니다.
class Ssar extends Emp {
// 책임 = 아이스크림
// 아이스크림 생산
// 재정의, 동적바인딩
Icecream makeIcecream(){
return Icecream();
}
}
hoho.都道府県を改める
// 직원
import 'emp.dart';
import 'icecream.dart';
// extends 상속
// Hoho라고 불릴 수 있고, Emp라고도 불릴 수 있습니다.
// 즉 다형성을 가집니다.
class Hoho extends Emp {
// 책임 = 아이스크림
// 아이스크림 생산
Icecream makeIcecream(){
return Icecream();
}
}
main.dart
import 'cos.dart';
import 'hoho.dart';
import 'love.dart';
import 'ssar.dart';
main(){
// 손님
Cos cos = Cos();
// 새로운 손님
Love love = Love();
// 직원(Emp, Ssar)
Ssar ssar = Ssar();
// 새로운 직원(Emp, Hoho)
Hoho hoho = Hoho();
// 손님이 주문을 하면 직원 아이스크림을 손님에게 줌
cos.order(ssar);
love.order(ssar);
love.order(hoho);
}
継承は、同じタイプにグループ化するために使用されます。
2.オブジェクト作成メモリ
Javaとは異なり、
Main( )
方法()
カテゴリ
インスタンス(オブジェクト)を作成すると、
DartはJavaとは異なり、クラス以外のものがメモリに表示されます。
継承
継承条件
1.多形性を形成する。
2.継承されるのはデータではなく、タイプです。
clss奏鳴曲extendsエンジンは継承ではありませんが、clssダブルハンバーガーextendsハンバーガーは継承ペアの
アイスクリーム店の例
3.継承は抽象化に使用されます。
Reference
この問題について(Dart継承), 我々は、より多くの情報をここで見つけました https://velog.io/@ruinak_4127/Dart-상속テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol