美文网首页flutter
Dart类的创建

Dart类的创建

作者: 习惯了_就好 | 来源:发表于2018-11-21 13:55 被阅读128次

Dart类默认继承Object类,定义一个类,内部有多种写法。
第一种可以跟java定义对象相同。

没有 public、private 之类的访问权限控制符,默认情况下,所有的符号都是公开的,get和set方法没什么意义。

如果我们不想某个变量对外部可见,可以使用下划线开头来给变量命名,效果类似添加private限制 。

class Person {
  String name;
  int _age;

  //  get方法
  String getName() {
    return name;
  }

  int getAge() {
    return _age;
  }

  //set方法
  void setName(String name) {
    this.name = name;
  }

  void setAge(int age) {
    this._age = age;
  }
}


var person = Person();
person.setName("lise");
print(person.getName());

第二种Dart常用方式

构造函数通常有三种方式

  //默认构造函数
//  Person() {}

  //初始化
//  Person(String name, int age, int sex) {
//    this.name = name;
//    this._age = age;
//    this._sex = sex;
//  }

  //简化的初始化,自动赋值
//  Person(this.name, this._age, this._sex) {}

  //  使用初始化列表(initializer list)对对象进行初始化
  //系统会自动辨别,第一个age是this.age,第二个age是形参age
  Person(String name, int age, int sex)
      :name = name,
        _age = age,
        _sex = sex {}

类变量的get、set方法,通常用去掉下划线后名字命名,这样get、set可以像属性一样使用。

class Person {
  String name;
  int _age;

  Person(String name, int age)
      :name = name,
        _age = age {}


  //  get方法
  String get getName => name;

  int get age => _age;

  //set方法

  void set setName(String name) => this.name = name;

  void set age(int age) => this._age = age;

}

var person = Person("zhagnsan", 20, 0);
print(person.age);
person.age = 10;
print(person.age);

Person类内部各种写法

class Person {
  //没有 public、private 之类的访问权限控制符,默认情况下,所有的符号都是公开的。
  // 如果我们不想某个变量对外部可见,可以使用下划线开头来给变量命名。
  String name;
  int _age;
  int _sex; //0男  1女
  //默认构造函数
//  Person() {}

  //初始化
//  Person(String name, int age, int sex) {
//    this.name = name;
//    this._age = age;
//    this._sex = sex;
//  }

  //简化的初始化,自动赋值
//  Person(this.name, this._age, this._sex) {}

  //  使用初始化列表(initializer list)对对象进行初始化
  //系统会自动辨别,第一个age是this.age,第二个age是形参age
  Person(String name, int age, int sex)
      :name = name,
        _age = age,
        _sex = sex {}


  //  get方法
//  String getName() {
//    return name;
//  }
//
//  int getAge() {
//    return _age;
//  }

  String get getName => name;

  int get age => _age;

  int get sex {
    return _sex;
  }

  //set方法
//  void setName(String name) {
//    this.name = name;
//  }
//
//  void setAge(int age) {
//    this._age = age;
//  }

  void set setName(String name) => this.name = name;

  void set age(int age) => this._age = age;

  void set sex(int sex) {
    this._sex = sex;
  }


}

类的集成也是使用extends关键字

import 'package:test1/bean/Person.dart';

class Student extends Person {

  int _grade;
  int _number;

  // 父类的构造函数只能在 initializer list 里调用
  Student(String name, int age, int sex, int grade, int number)
      :_grade = grade,
        _number = number,
        super(name, age, sex);

  int get grade => _grade;

  int get number => _number;

  void set grade(int grade) => this._grade = grade;

  void set number(int number) => this._number = number;

}

类的集成执行顺序为:

  • 先执行子类 initializer list,但只初始化自己的成员变量
  • 初始化父类的成员变量
  • 执行父类构造函数的函数体
  • 执行之类构造函数的函数体

泛型类
跟 Java 不同,Dart 的泛型参数类型在运行时是保留的。

class Info<T, S, K> {
  T member1;
  S member2;
  K member3;

  Info(this.member1, this.member2, this.member3);
}

var info = Info("lisi", 20, "abc");
print("泛型使用:" + info.member1);
print("泛型使用:${info.member2}");
print("泛型使用:"  "${info.member3}");//奇葩的字符串连接方式,竟然可以使用空格

练习demo,链接https://gitee.com/xgljh/Flutter

相关文章

  • Dart类的创建

    Dart类默认继承Object类,定义一个类,内部有多种写法。第一种可以跟java定义对象相同。 没有 publi...

  • Dart类模版创建

    新建Dart文件模版,仅限Android Studio开发; 目前新建Dart文件之后,是一个空类,不包含任何代码...

  • AndroidStudio创建dart文件

    最近学习Flutter,使用as作为ide,然后发现没有办法像创建Activity那样创建Dart类文件。创建的都...

  • dart创建单例类

    1.首先创建出类,例如下: 2.将匿名构造方法私有化: 现在外部已经无法调用Manager的匿名初始化构造方法了。...

  • 数据库操作

    1.创建初始化数据库类db_init.dart 2.创建基类TableBase描述:TableBase是一个抽象类...

  • Flutter开发-Dart语言基础-3

    接着上篇,这节继续Dart基础语法. 类 类是一个实例的抽象,通过类来创建实例,创建实例的过程叫做初始化. 构造函...

  • Dart基础补充(二)

    Dart类与对象 使用命令行工具创建新的工程flutter_oop,创建完成用Android Studio工具打开...

  • Dart之集合使用

    Dart 附带了核心集合 API ,其中包括 list ,set 和 map 类。 List 有序集合 创建 操作...

  • Dart基础补充(一)

    AS创建空的Dart工程 AS创建Dart空工程 Android Studio -> New Flutter Pr...

  • Fish-Redux with SingleTickerProv

    创建一个扩展类State 在Page.dart文件内重写createState方法 使用的地方

网友评论

    本文标题:Dart类的创建

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