<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## 類 ``` class person { String name; } void main() { var a = new person(); //等效 var a = asd(); print(a.runtimeType); // person 獲取運行時類型 print(a?.name = "cc"); //如果name 為null 則賦值 cc } ``` > 在 Dart 2 中 new 關鍵字變成了可選的。 ### 構造函數 ``` class person { String name; int age=0; person(String name,this.age){ //this.age 為語法糖 this.name=name; } } void main() { var a = person("cc",23); print(a.name); // cc print(a.age); // 23 } ``` > 構造函數不能夠被繼承 ### Getter 和 Setter ``` class person { String name; num _age = 0; person(name, this._age) { this.name = name; } num get age1 => _age + 1; num get age2 { return _age + 1; } set age3 (num a)=> _age=_age-10; } void main() { var a = person("cc", 23); print(a.age1); // 24 print(a.age2); // 24 a.age3=123; print(a.age1); // 14 } ``` ### 抽象方法 / 抽象類 實例方法, getter, 和 setter 方法可以是抽象的, 只定義接口不進行實現,而是留給其他類去實現。 抽象方法只存在于 抽象類 中。 ``` abstract class Doer { // 定義實例變量和方法 ... void doSomething(); // 定義一個抽象方法。 } class EffectiveDoer extends Doer { void doSomething() { // 提供方法實現,所以這里的方法就不是抽象方法了... } } ``` ### 擴展類(繼承) 使用 extends 關鍵字來創建子類, 使用 super 關鍵字來引用父類: ``` class Television { void turnOn() { _illuminateDisplay(); _activateIrSensor(); } // ··· } class SmartTelevision extends Television { void turnOn() { super.turnOn(); _bootNetworkInterface(); _initializeMemory(); _upgradeApps(); } // ··· } ``` ### 重寫類成員 ``` class SmartTelevision extends Television { @override void turnOn() {...} // ··· } ``` ### noSuchMethod() 調用不存在的方法觸發 ``` class A { // 如果不重寫 noSuchMethod,訪問 // 不存在的實例變量時會導致 NoSuchMethodError 錯誤。 @override void noSuchMethod(Invocation invocation) { print('You tried to use a non-existent member: ' + '${invocation.memberName}'); } } ``` ### 類變量和方法 #### 靜態變量 靜態變量只到它們被使用的時候才會初始化。 ``` class Queue { static const initialCapacity = 16; // ··· } void main() { assert(Queue.initialCapacity == 16); } ``` #### 靜態方法 靜態方法(類方法)不能在實例上使用,因此它們不能訪問 this ``` class person { static echo(String name) { print('hello ${name}'); } } void main() { person.echo('cc'); } ``` ### call() 方法 ``` class WannabeFunction { call(String a, String b, String c) => '$a $b $c!'; } main() { var wf = new WannabeFunction(); var out = wf("Hi","there,","gang"); print('$out'); // Hi there, gang! } ``` ### 元數據 #### @deprecated 被棄用的 若某類或某方法加上該注解之后,表示此方法或類不再建議使用,調用時也會出現刪除線 ``` class Television { @deprecated void activate(){ turnOn(); } } ``` #### @override重寫 #### @proxy 代理 #### @required 來標記一個參數 * 告訴編譯器這個參數必須要傳值 * 告訴讀代碼的人,這個參數必須要填寫 ## 泛型 ``` abstract class ObjectCache { Object getByKey(String key); void setByKey(String key, Object value); } abstract class StringCache { String getByKey(String key); void setByKey(String key, String value); } // 泛型實現 abstract class Cache<T> { T getByKey(String key); void setByKey(String key, T value); } ``` ### 限制泛型類型 ``` class Foo<T extends SomeBaseClass> { // Implementation goes here... String toString() => "Instance of 'Foo<$T>'"; } class Extender extends SomeBaseClass {...} // 可以使用 SomeBaseClass 或其任意子類作為通用參數: var someBaseClassFoo = Foo<SomeBaseClass>(); var extenderFoo = Foo<Extender>(); ``` ### mixin 混合 Dart 是不支持多繼承的,但是它支持 mixin ``` class Person { say() { print('say'); } } mixin Eat { eat() { print('eat'); } } mixin Walk { walk() { print('walk'); } } mixin Code { code() { print('key'); } } class Dog with Eat, Walk{} class Man extends Person with Eat, Walk, Code{} ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看