Flutter 实战6

Flutter 实战6

智慧rdda大成 智慧RdDa大成 今天

上面简单讲了类,还记得吗?这是是什么

class C {  static void m() {}}
extension E on C {  void f() {    m();  }}

 

Dart 抽象类和抽象方法

抽象类是面向对象开发中较为难理解的一点。在Dart中,抽象类中可以定义抽象方法。所谓抽象方法,是指只有定义却没有实现的方法,抽象是面向接口开发的基础。以生活中汽车产品的生产为例,一辆完整的汽车的生产往往需要多个厂家合作,例如发动机生产厂家、轮胎生产厂家、门窗内设生产厂家等。不同的厂家生产的配件若要完美地组合成一辆汽车,则必须遵守统一的标准,也可以理解为按照实现的协议进行生产。在编程中也是这样的,一个复杂的程序可能需要很多开发者甚至多个部门进行配合开发,每个开发者或部门负责一个模块,而模块之间又可以进行交互与连通,这时在程序真正编写前,我们就需要先约定协议、制定接口。

现在你应该理解了,抽象类实际上就是一个接口,接口中定义了未实现的方法告诉调用者:如果有类实现了这个接口,这个类就拥有接口所描述的功能。例如,我们可以为人类定义一个接口,示例如下:

abstrace class PeopleInterface{  People();}

上面的PeopleInterfaceInterface接口中只定义了一个抽象方法,People类可以对这个接口进行实现,示例代码如下:

class People implement PeopleInterface{  String name;  int age;  String cardnumber;  People(this.name,this.age,this.cardnumber);  void SayHello(String toName){    print("Hello $(toName),我是$(this.name),年龄是$(this.age),证件号码是$(this.cardnumber)"  }}

抽象类不可以被实例化,即不能直接使用抽象类来构造实例对象,只能通过实现这个抽象类接口的类或者继承它的子类来实例化对象

Dart 异常

void f() {  try {    int.parse(';');  } on FormatException catch (e) {    // ignored  }}
void f() {  try {    // ...  } catch (exception, stackTrace) {    // ...  }}

实际编写程序,会具体定义f是什么例如:定义一个Tearcher类。People 类或者role等等。

 

 

Dart 类的继承

继承是类的重要特性。子类继承父类后,可以直接使用父类中定义的属性和方法,并且子类可以对父类的方法进行重写以实现定制化的功能。继承其实很容易理解,现实中的事物为了方便描述与归纳,也会进行分门别类,例如生物界可以分为动物和植物,动物类下面又可以分出鱼类、鸟类等,动物类就是生物的子类,鱼类、鸟类又是动物类的子类。越是上层的类,封装的属性和方法越通用,子类会在父类的基础上进行扩展,增加许多独特的属性和方法。

在Dart中,使用extends关键字进行类的继承。以教师类为例,我们可以定义一个人类作为其父类,示例如下:

 

class Teacher expends  People{ //继承上面的People类   Teacher(name,age,cardnumbe):super(name,age,cardnumber)   //构造方法直接调用了父类的构造方法   Teaching(){     print("$(name)老师正在教学。");   }      @override   SayHello(){     super.SayHello();     print("我是$(name)")   }}

@override 子类重载了父类的SayHello;

重载运算符非常简单,却是非常强大的一个功能,在Dart中支持重载的运算符如表

图片

枚举类型

枚举是一种特殊的类型,其用来描述有限个数的数据集合。比如前面在定义教师类时,其中定义了一个科目的属性,虽然我们将其定义为字符串类型,但是这并不十分严谨,教师所教学科目的类目是有限的,而且应该是固定的,不会随意增减,对于这种情况,使用枚举非常合适。

enum Subject(  Dart,java,C++,C#,  Swift,  Python  )

enum 关键字用来定义枚举,下标用0开始

扩展类的功能——Mixin特性

Mixin是Dart中非常强大的一个特性。通过前面的学习,我们知道,Dart只支持单继承,即子类只能够有一个父类。有的时候,我们需要集合多个类的功能来实现一个复杂的自定义类,就需要使用到Mixin特性。

Mixin从字面来理解为混合的意思,顾名思义,Mixin的主要作用也是进行混合,其允许一个类将其他类的功能混合进。

泛型是Dart语言另一十分强大的特性,泛型使得Dart中的类型更加动态,并且大大提高了代码的重用率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值