美文网首页
2022-03-02 dart语法之Extension Meth

2022-03-02 dart语法之Extension Meth

作者: 我是小胡胡分胡 | 来源:发表于2022-03-02 15:54 被阅读0次

    https://cloud.tencent.com/developer/article/1889373

    一、类定义

    1、 类
    class 普通类 (成员方法必须要实现)
    mixin 多继承,混入类(不能有构造方法)
    abstract class 抽象类 (定义抽象方法)

    2、类继承, 3个关键字:
    extends 继承
    implements 继承(父类方法必须要实现)
    with 多继承(父类不能有构造方法)

    3、约束:
    on 约束(继承mixin类的类,必须同时继承约束类)

    extends 和 on 只能用一个。on用在mixin类后面,表示继承该mixin类的那些类,也需要继承on类

    例如这样:

    class A1 extends A4 {}
    
    class A2 {}
    
    mixin A3 on A4 {}
    
    class A4 {}
    
    class A5 extends A1 with A3 implements A2 {}
    

    二、类扩展

    https://juejin.cn/post/6844904191488425992

    给一个现有的类,扩展方法。

    extension 名字 on 某个类名{
      新方法;
    }
    

    在当前文件有效:扩展名字下滑线开头,或者省去扩展名字。
    想到了objective-c的extension和category,类扩展(extension)是分类(category)的一个特例,有时候也被称为匿名分类 。

    extension _名字 on 某个类名{
      新方法;
    }
    

    例如这样:

    extension TxtExtensions on String {
      String get transformUnicode {
        var transform =
            this.replaceAllMapped(RegExp('\\\\U111[0-9a-zA-Z]{5}'), (match) {
          var radixString =match.group(0).substring(4);
          return radixString;
        });
        return transform;
      }
    

    扩展属性可以吗? 不可以。其他的限制我从别的地方复制过来了:
    扩展不支持的,有报错的时候应该就可以对号入座,因为编译器会直接报错。

    • 声明一个具有与扩展名相同的基本名称的成员。
    • 声明与扩展名相同的类型参数。
    • 声明一个具有与任何扩展程序类型参数名称相同的基本名称的成员。
    • 声明两个具有相同基本名称的成员,除非一个成员是getter而另一个是setter。
    • 声明一个具有相同名字的setter和getter,一个是静态的,另一个不是。
    • 声明具有相同名字成员作为成员声明由Object(==,hashCode,toString,noSuchMethod,runtimeType)。这适用于静态和实例成员声明。
    • 声明一个构造函数。
    • 声明一个实例变量。
    • 声明一个抽象成员。
    • 声明成员,其正式参数标记为covariant。

    相关文章

      网友评论

          本文标题:2022-03-02 dart语法之Extension Meth

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