dart中類的繼承


super

class Person {
    int age;
    string name;
    Person(int age, String name){
        this.age = age;
        this.name = name;
    }
    void sayhi(){
        print('my name is' this.name)
    }
}

class Worker extend Person{
    int salary;
    Worker(int age, string name, int salary) : super(age, name){  //super表示要繼承父類的屬性
        this.salary = salary;
    }
    @override  //告訴編譯器和程序員他是一個重寫覆蓋父類的方法
    void sayhi(){
     super.sayhi()    //表示調用父類的sayhi方法 print(
'my salary is'+ this.salary) } }

在dart中是單繼承只能繼承單個父類,不能繼承多個類,若想實現多繼承必須通過多混合的方式實現。extend關鍵字將變成with來實現混合

混合:同時具備多個類的方法

  若類中有一個方法,混合里邊也有一個方法,則優先使用類自身的方法;

  若只有混合里邊有同名的方法,在最后面的會生效(如下例子中sleep會生效),因為他把前邊的混合掉了

void main(){
  var p = new Person(15,'sdf');
  p.eat(); //並不會報錯
}
class
Eat{ void eat(){ print('eat') } } class Sleep{ void sleep(){ print('sleep') } } class Person with Eat, sleep{ int age; string name; person(int age, string name){ this.age = age; this.name = name; } void sayhi(){ print('hi'); } }

抽象類

  抽象類的關鍵詞:abstract,只有方法的定義,沒有方法的實現。存在的意義就是有這個想法但是還沒有實現。如果person類繼承了抽象類,則抽象類中方法的實現便交給繼承者實現;

  抽象類另一個特點是不能被實例化

abstract class Chouxiang{
    void ya()
}

class person extend Chouxiang{
    void ya(){
        print('sdf')
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM