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);
    }
  • 一人のお客様は同時に2人の従業員に注文できません.
  • を同時に注文する関数を追加する必要がありますが、継承を使用します.
  • 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とは異なり、
  • dartは外部で変数、関数、クラスを作成できます.
  • Main( )


  • main()は、「heap」というメモリ領域に浮かぶ必要があります.
  • クラス内のコンテンツはメモリ領域に表示されません.
  • メソッドがメモリ領域に表示されます.
  • 変数もメモリ領域に表示されます.
  • 方法()


  • main()にhello()メソッドを作成します.
  • main()を実行すると、hello(スタック)メモリという空間が作成され、sum変数が登録されます.
  • hello()メソッドの実行が終了すると、スタックメモリが失われます.
  • スタックはメモリ管理を行う必要がありますが、メソッド内でメソッドを呼び出し続けるとスタックは終了しません->スタックオーバーフローが発生します.
  • スタックは、メソッドの実行時に一時的にメモリに表示され、その後消失するので、
  • を心配する必要はありません.

    カテゴリ



    インスタンス(オブジェクト)を作成すると、
  • クラスがHipメモリ領域に表示されます.
  • には、インスタンスが持つ変数とメソッドが表示されます.
  • DartはJavaとは異なり、クラス以外のものがメモリに表示されます。


    継承


    継承条件


    1.多形性を形成する。



    2.継承されるのはデータではなく、タイプです。


  • 奏鳴曲、エンジン、ハンバーガー、ダブルハンバーガーがある場合
    clss奏鳴曲extendsエンジンは継承ではありませんが、clssダブルハンバーガーextendsハンバーガーは継承ペアの
  • です.
  • 奏鳴曲、あなたは奏鳴曲ですか?( O )
  • 奏鳴曲、あなたはエンジンですか?( X )
  • ツインバーガーですが、あなたはダブルバーガーですか?( O )
  • ダブルバーガー、あなたはバーガーですか?( O )
  • アイスクリーム店の例


  • ビットアルゴリズムでは、従業員またはお客様を交換するたびに
  • を作成し、アルゴリズム
  • を変更する必要はありません.
  • Ssar拡張客、すなわち客s=Ssar()お客様s 2=Love();
  • Cos extends従業員、すなわち従業員e=Cos()
  • 3.継承は抽象化に使用されます。