美文网首页
3. Dart多接口对象

3. Dart多接口对象

作者: 前端雨 | 来源:发表于2020-12-07 17:03 被阅读0次

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

    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;
    }
    

    相关文章

      网友评论

          本文标题:3. Dart多接口对象

          本文链接:https://www.haomeiwen.com/subject/xzstgktx.html