Dart(6)-类

一、概述

Dart是面向对象语言,以对象为核心,而对象的核心就是类,类作为数据封装的载体,并且dart为class提供了内置支持。

二、类的声明

class class_name {  
   <fields>
   <constructors>
   <getters/setters>
   <functions>
}

类成员可包括以下内容

  • <fields>字段 - 字段是类中声明的任何变量或常量。字段表示与对象有关的数据。

  • <constructors>构造函数

  • <getters/setters>get和set方法

  • <functions>函数

三、类的实例化

类的实例化,也就所说的创建对象。语法如下:

SplayTreeMap map = new SplayTreeMap(); //new 可以省略

实例化完成后,就可以通过map引用进行相关操作了。比如使用map中的实例和函数:

map.length;
map.lastKey();

四、构造函数

请查看 构造函数

五、函数

请查看 函数

六、Geter和Seter

Getter和Setter函数,dart语言中,都会为每个属性匹配setter,getter函数,但是final修饰的属性只有getter函数。

class Circle{
  static final double PI = 3.14;
  double radius; //半径
  Circle(this.radius);

  double get area => PI * radius * radius;
  get _girth => 2 * PI * radius;
  set setRadius(radi) => radius = radi;

  void main() {
    Circle circle = Circle(0.5);
    circle.setRadius = 1;
  }

}

七、作用域

dart中只有两种作用域,即公有和私有。正常情况下就是公有,如果想弄成私有,在变量或函数名前加个下划线即可。如下:

class Father {
​
  int bloodGroup; //公有变量
  int _character; //私有变量
​
  int  getBloodGroup() { //公有函数
    return bloodGroup;
  }
​
  int _getCharacter() { //私有函数
    return _character;
  }
}

八、继承

面向对象语言基本都会支持继承概念,被继承的类我们通常称为父类或超类,继承的类称为子类,继承父类的成员函数称为重写。继承使用的关键字为extends,子类可以继承父类中除构造函数和静态成员以外的所有成员。Dart不支持多重继承。

语法:

class child_class_name extends parent_class_name

示例:

class Father {
  int bloodGroup;
​
  int  getBloodGroup() {
    return bloodGroup;
  }
}
​
import 'package:flutter_demo/clazz/Father.dart';
​
class Son extends Father{
  @override
  int getBloodGroup() { //方法重写
    // TODO: implement getBloodGroup
    return super.getBloodGroup();
  }
}

九、抽象类

抽象类不能实例化,它主要是用来定义标准的,可以使用extends关键字来继承抽象类,也可以使用implements关键字当做接口来实现。

1、抽象类通过abstract 关键字来定义

2、Dart中的抽象方法不能用abstract声明,Dart中没有方法体的方法我们称为抽象方法。

3、如果子类继承抽象类必须得实现里面的抽象方法

4、如果把抽象类当做接口实现的话必须得实现抽象类里面定义的所有属性和方法。

5、抽象类不能被实例化,只有继承它的子类可以被实例化

十、this

this是指类的当前实例(当一个类被实例化后,this可以拿到这个对象的所有内容)。一般在构造器内给参数赋值用的比较多。

十一、static

static主要用于对类内的成员进行定义,有static修饰就表示该成员为静态成员,可以直接用类名调用。

十二、super

super关键字是用来指当前类的直接父类,表示父类的对象。

十三、可调用类

/**
 * 如果一个类中只有一个call方法,那么这个类就叫做可调用类
 * 直接对象名(参数1,参数2)调用即可
 */
class CallClass {
  call(String s, int i) => print('xxxx');
}
​
void main() {
  var v = CallClass();
  v('xxx',1);
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值