Dart-2 类与单继承-mixin多继承与抽象类(基础)

3) 类与单继承


void main(){
    var p = new Person(12,'haha'); //实例化
//    p.age = 123;
    print(p);   //Instance of 'Person'
    print(p.age);   //12
    print(p.name);  //haha
    p.sayHello();   //my name is:"haha"
    var w = new Worker(22, 'ouyou', 2000);
    w.sayHello(); /* my name is:"ouyou"
                    my salary is 2000
                  */
}

class Person { //定义叫Person的类
    int age;
    String name;
    //构造函数
    Person(int age , String name){
        this.age = age;
        this.name = name;
    }
    void sayHello(){
        print('my name is:"' + this.name+'"');
    }
}



class Worker extends Person{  //extends 单继承
   int salary;
   Worker(int age,String name, int salary):super(age,name){ //:super()表示该构造调用父类
       this.salary = salary;
   }

   @override  //同java中  重写父类方法
  void sayHello(){
     super.sayHello(); //my name is:"ouyou"   //super代表父类的方法
       print('my salary is '+ this.salary.toString());
   }
}

4) mixin多继承与抽象类


void main(){
    var p = new Person(12,'haha');
//    p.age = 123;
    p.sayHello(); //say hello in eat
    p.sleep();  //sleep
    p.eat();  //eat
    p.have_a_baby();  //have a body

}
//类与混合都有相同的方法时  优先使用类的方法
// 如果 类没有该方法  混合的几个有同名的方法时  with 最后面的生效
class Eat {
  void eat(){
    print('eat');
  }
  void sayHello(){
    print('say hello in eat');
  }
}

class Sleep {
  void sleep(){
    print('sleep');
  }
  void sayHello(){
    print('say hello in sleep');
  }
}

abstract class Animal{    //抽象类
  void have_a_baby();   //抽象方法  不一定实现  设想  让继承的类 实现
}

class Person extends Animal with Sleep,Eat {  //with  多继承  混合
    int age;
    String name;
    //构造函数
    Person(int age , String name){
        this.age = age;
        this.name = name;
    }
    @override
  void have_a_baby() {   //实现抽象类的方法
    print('have a body');
  }
//    void sayHello(){
//        print('my name is:"' + this.name+'"'); //my name is:"haha"
//    }
}

你可能感兴趣的:(Dart-2 类与单继承-mixin多继承与抽象类(基础))