美文网首页js css html
Flutter-Dart的构造函数

Flutter-Dart的构造函数

作者: 阿博聊编程 | 来源:发表于2022-04-09 21:59 被阅读0次
Flutter,图片来源于网络

构造函数是类用来实例化类对象并且与类名同名的方法。这篇文章就来分享一下Dart的构造函数知识,希望对看文章的小伙伴有所帮助。

构造函数

默认情况下,Dart会为每一个类自动声明一个空的构造函数。我们也可以自定义构造函数,来一个简单的代码举例:

class Fish{
    String name;
    String type;
    
    Fish(String name,String type){
       this.name = name;
       this.type = type;
    }
}

上面有使用this关键字,是为了防止参数名和属性名发生冲突。再来一个使用代码示例:

Fish fish = new Fish('金龙鱼','小鱼');
print(fish.name);

这里需要注意的是,自定义自己构造参数之后,原本空构造参数就会失效,就不能使用new Fish()来实例化对象。

构造参数简洁写法

Dart给我们提供简洁构造参数写法,示例代码:

class Fish{
    String name;
    String type;
    
    Fish(this.name,this.type);
}

关于构造方法,我们还有一点需要注意的是:

构造函数是不能被子类继承的,如果子类没有自定义构造函数,那么它的构造参数就是空的。

构造函数分类

  1. 默认构造函数,上面说的空构造函数就是默认构造函数;
  2. 普通构造函数,上面简单的自定义构造函数就是普通构造函数;
  3. 命名构造函数;
  4. 常量构造函数;
  5. 工厂构造函数。

命名构造函数

命名构造函数的语法:

ClassName.identifier()

命名构造函数,代码举例如下:

class Fish{
    String name;
    String type;
    
    Fish.born(String name){
        this.name = name;
        this.type = '未知';
    }
    
    Fish(String name,String type){
       this.name = name;
       this.type = type;
    }
}

使用这种函数可以定义多个意义不同的命名构造函数。命名构造函数,需要注意的是:

它还是不能被子类继承,但是可以重写父类名称相同的命名构造函数。

常量构造函数

假设类创建的对象永远不会改变,可以在编译期就创建这个常量实例,并且定义一个常量构造函数,并且确保所有的成员变量都是final的。代码举例:

class ImmutablePoint {
  static final ImmutablePoint origin = const ImmutablePoint(0, 0);

  final num x, y;

  const ImmutablePoint(this.x, this.y);
}

工厂构造函数

想要创建一个工厂构造函数,我们使用到factory关键字修饰普通构造函数,代码举例:

class Fish{
    String name;
    String type;
    
    // Fish 单例具体实现
    static Fish fish;
    
    Fish._born(this.name):age = 0
    
    factory Fish(){
       if(fish == null){
            fish = Fish._born('单例鱼');
       }
       return fish;
    }
}

void main(){
    Fish fish = new Fish();
    print(fish.name);
}

调用父类的构造函数

当父类没有默认构造函数的时候,我们想要调用父类构造函数,就需要在子类的构造函数主体之前、冒号之后指定需要调用的构造函数,代码举例:

class Finsh extends Object{
    Finsh.fromJson(Map data){
        print('Finsh.fromJson')
    }
}

class Goldfish extends Fish{
    Goldfish.fromJson(Map data):Finsh.fromJson(Map data){
        print('Goldfish.fromJson')
    }
}

void main(){
    var fish = new Goldfish({});
}

相关文章

  • Flutter-Dart的构造函数

    构造函数是类用来实例化类对象并且与类名同名的方法。这篇文章就来分享一下Dart的构造函数知识,希望对看文章的小伙伴...

  • Flutter-Dart构造函数介绍

    写flutter 真的是}})))}}})))改到崩溃。。。。 【转】Dart构造函数介绍 介绍 因为Flutte...

  • C# 构造函数总结

    构造函数 构造函数分为:实例构造函数,静态构造函数,私有构造函数。 实例构造函数 1、构造函数的名字与类名相同。 ...

  • Flutter 6种构造函数详解

    Flutter有生成构造函数、默认构造函数、命名构造函数、重定向构造函数、常量构造函数、工厂构造函数 一.生成构造...

  • Swift基础语法-类的构造函数

    本节知识点 构造函数的介绍 构造函数的基本使用 自定义构造函数 属性与构造函数 1. 构造函数的介绍 构造函数类似...

  • C++:面向对象基础

    构造函数 C++中有三种构造函数:默认构造函数,有参构造函数,拷贝构造函数 类对象的初始化 括号法//默认构造函数...

  • Javascript 基础之原型链

    构造函数、构造函数实例、构造函数原型 function Student (name) { } - 这是构造函数va...

  • 构造函数

    构造函数分为: 1.实例构造函数 2.私有构造函数 3.静态构造函数 私有构造函数 私有构造函数是一种特殊的实例构...

  • Kotlin面向对象 (3)✔️构造函数

    主构造函数次构造函数默认构造函数 kotlin中的构造函数有主次之分,主构造函数只能有一个,此构造函数可以有多个。...

  • Java基础-3 构造函数

    构造函数: 构造函数的作用: 给对应的对象进行初始化。 构造函数的格式: 构造函数要注意的细节:1. 构造函数是...

网友评论

    本文标题:Flutter-Dart的构造函数

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