3. Dart多接口对象

面向对象(接口,多接口)

main(){
    var m = new Male('ll'); // 1.报错: Try removing the extra positional arguments. 
    m.run();
    m.eat();
}

abstract class Animal{
    eat();
}

// 定义抽象类
abstract class Person{
    String name;
    run();
    sing();
}

// 多个接口实现:继承多个抽象类,直接,分隔开实现继承
class Male implements Person, Animel{
    @override
    String name;
  // -->1
  Male(this.name);

    @override
    run(){
        print('$name is running');
    }
    @override
    sing(){
        print('$name is singing');
    }

    @override
    eat(){
        print('正在继承Animel抽象类');
    }
}

混入

  1. Dart中可以使用mixin实现类似多继承的功能
  2. 作为mixin的类只能继承自Object(dart里面的所有东西都是继承自Object),不能继承其他类
  3. 作为mixin的类不能有构造函数
  4. 一个类可以mixin多个mixin类
  5. mixin绝不是继承,也不是接口,而是一种全新的特征
main(){
    var a = new A('ll');
    a.printB();
    a.printC();
    a.printD();
    print(a.name);
}

class B{
    printB(){
        print('B类');
    }
}

class C{
    String name;
    // 构造函数
    C(this.name);
    printC(){
        print('C类--$name');
    }
}

class D{
    printD(){
        print('D类');
    }
}

// C上有构造函数,要通过普通继承方式继承C
class A extends C with B,D{
    A(String name): super(name);
}

Dart面向对象(泛型)

main(){
    String val = getVal('11');
    getAllVal(11);
    String s = getAllVal('33');
    int i = getAllVal(3366);
    List a = ['1','3'];
  print('$a,$s,$i');
}

String getVal(String val){
    return val;
}

// 定义泛型函数:不校验接收参数类型
T getAllVal(T val){
    return val;
}

你可能感兴趣的:(3. Dart多接口对象)