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<String>('33');
    int i = getAllVal<int>(3366);
    List<String> a = ['1','3'];
  print('$a,$s,$i');
}

String getVal(String val){
    return val;
}

// 定义泛型函数:不校验接收参数类型
T getAllVal<T>(T val){
    return val;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容