dart中的抽象类、多态、接口、泛型、late、required

Flutter 里的语法糖解析,知其所然方能潇洒舞剑 如下图所示,在 Cat 的使用处,编译后可以看到 cat.talk() 其实就是执行了 main::CatExtension|talk。 阅读详情

抽象类

  • 抽象类通过abstract 关键字来定义
  • 抽象类不能被实例化,只有继承它的子类可以
  • 抽象类里面的抽象方法 在继承的时候必须要定义这些方法
  • 如果子类继承抽象类必须得实现里面的抽象方法
  • 如果把抽象类当做接口实现的话必须得实现抽象类里面定义的所有属性和方法。

多态

  • 多态就是父类定义一个方法不去实现,让继承他的子类去实现,每个子类有不同的表现。
  • 多个子类继承一个父类,每个子类的抽象方法逻辑不一样

late

延迟初始化 定义变量没有赋值的时候需要在前面加late

require

参数不能为空

import 'dart:core';
//抽象类  约束子类
/*
  抽象类通过abstract 关键字来定义
  抽象类不能被实例化,只有继承它的子类可以
  抽象类里面的抽象方法 在继承的时候必须要定义这些方法
  如果子类继承抽象类必须得实现里面的抽象方法
  如果把抽象类当做接口实现的话必须得实现抽象类里面定义的所有属性和方法。
 */

/*多态
  多态就是父类定义一个方法不去实现,让继承他的子类去实现,每个子类有不同的表现。
  多个子类继承一个父类,每个子类的抽象方法逻辑不一样
 */

/*接口
  dart的接口没有interface关键字定义接口,而是普通类或抽象类都可以作为接口被实现。
  建议使用抽象类定义接口。
  使用implements关键字进行实现
 */

/*泛型
  类型校验可以传入 便于封装
*/

/*
 * ?表示可空类型  ! 类型断言
 * int? a=123  int?表示a为可空类型
 * string? str='xxx' 表示str为可空类型
 */

/*
  *late 延迟初始化  定义变量没有赋值的时候需要在前面加late
  *require 参数不能为空
 */
T getData<T>(T val) {
  return val;
}

//泛型类
//不指定就是任意类型
class Pwxs<T, I> {
  List ary = <T>[];
  List arys = <I>[];

  void add(T val, I key) {
    this.ary.add(val);
    print('$val--$key');
  }
}

abstract class Anm {
  eat(); //抽象方法
  run(); //抽象方法
}

class Aog extends Anm {
  //  @override 告诉你说下面这个方法是从父类/接口 继承过来的
  @override
  eat() {
    print('eat Aog');
  }

  @override
  String run() {
    return 'run Aog';
  }
}

class Cog extends Anm {
  //  @override 告诉你说下面这个方法是从父类/接口 继承过来的
  @override
  eat() {
    print('eat Cog');
  }

  @override
  String run() {
    return 'run Cog';
  }
}

//接口  定义约束定义
abstract class Db {
  late String uri;
  add(Map data);
  update();
  delete();
}

class Api implements Db {
  String uri;

  Api(this.uri);
  @override
  add(data) {
    print(data);
    return data;
  }

  @override
  update() {
    return 'update';
  }

  @override
  delete() {
    return 'delete';
  }
}

main(List<String> args) {
  Anm aog = new Aog();
  aog.eat();
  print(aog.run());

  Anm cog = new Cog();
  cog.eat();
  print(cog.run());

  Api api = new Api('127.0.0.1');
  api.add({'a': 10});

  getData<String>('xxx');
  List<String> arr = ['10', '2'];
  print(arr);
  Pwxs cla = Pwxs<String, int>();
  cla.add('xxx', 10);
  print(cla.arys);

  String? sw = 'zyy';
  sw = null;
  print(sw);
}

【东华大学oj】找到最大数(一维数组->中等) 一天,老师布置了一个作业,要求对一串数字各不相同的数字串进行排序,大的在前,小的在后。接着,我从数字串中的第二个数字开始往后找,找到最大的一个,然后与第二个数字交换,这样的话我就能够确定排序后数字串中的第二个数字;明明研究发现,他的这个想法中最重要的一环就是在一串数字中找到最大的那个,然后与第一个数字交换,可是明明毕竟刚刚开始学习程序设计不久,无法写出较复杂的程序,所以明明想让你这位程序设计专家帮他的忙,帮助他把这段核心程序写出来,然后明明只需模仿着写就可以了。时间限制: 1S类别: 一维数组->中等。 阅读详情

相关推荐

MFC停靠窗口实战:CDockablePane从创建到控件布局的完整指南(附残影问题排查)

本文提供了MFC中CDockablePane停靠窗口的完整实战指南,涵盖从自定义窗格类创建、主框架集成、内部控件布局到高级功能定制的全过程。针对开发中常见的“残影”视觉问题,文章深入剖析了其根源,并给出了系统性的排查步骤与解决方案,帮助开发者构建稳定、专业的可停靠用户界面。

sun99的博客 614

dart中late关键字的作用

Dart 2.12 添加了late关键字,他有两个作用: 1)显式声明一个非空的变量,但不初始化 如下,_temperature如果不加late关键字,类实例化时此值是不确定的,无法通过静态检查,加上late关键字可以通过静态检查,但由此会带来运行时风险。 // Using null safety: class Coffee { late String _temperature; void heat() { _temperature = 'hot'; } void chill() {

weixin_44239910的博客 1万+

告别Keil手动分区!用CubeMX+VS Code一键生成带Bootloader的STM32 OTA工程

本文详细介绍了如何利用STM32CubeMX和VS Code实现STM32 OTA工程的自动化构建,告别传统Keil手动分区的繁琐流程。通过图形化配置Flash分区、自动生成链接脚本以及实现Bootloader跳转逻辑,开发者可以高效完成远程升级功能开发,显著提升嵌入式开发效率。

weixin_33720956的博客 389

dart 最新语法之可空与非空类型 late关键字的作用

Dart 2.12 添加了late关键字,他有两个作用: 1)显式声明一个非空的变量,但不初始化 如下,_temperature如果不加late关键字,类实例化时此值是不确定的,无法通过静态检查,加上late关键字可以通过静态检查,但由此会带来运行时风险。 // Using null safety: class Coffee { late String _temperature; void heat() { _temperature = 'hot'; } void chill() {

weixin_38107457的博客 2122

在 Ansys Mechanical 中使用“螺栓工具”插件自动生成螺栓

在有限元分析 (FEA) 中,高效创建螺栓连接对于确保机械装配的结构完整性和性能至关重要。螺栓是连接组件不可或缺的一部分,它们在负载下的精确建模会影响整个系统。快速高效的螺栓建模使工程师能够快速优化设计,满足紧迫的期限,并通过为其他关键设计任务释放资源来提高整体生产力。此外,螺栓建模的精度可以最大限度地降低模型创建过程中出错的风险,这对于获得可靠和准确的分析结果至关重要。因此,在 FEA 中快速且无错误地创建螺栓连接对于高效、可靠和成功的工程结果至关重要。

jkh920184196的博客 3102

【Docker】Docker安装Hadoop分布式集群

hadoop目录安装在:/usr/local/hadoop-2.7.0/etc/hadoop。访问Hadoop102:9870,查看是否能够看到hdfs界面。访问hadoop103:8088,查看能够看到yarn界面。在yarn上可以看到执行情况。

weixin_46429290的博客 3461

Dart 抽象类

Dart中抽象类: Dart抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口。 抽象类通过 abstract 关键字来定义 Dart中的抽象方法不能用abstract声明,Dart中没有方法体的方法我们称为抽象方法。 如果子类继承抽象类必须得实现里面的抽象方法 如果把抽象类当做接口实现的话必须得实现抽象类里面定义的所有属性和方法。 抽象类不能被实例化,只有继承它的子类可以 extends抽象类 和 implements 的区别: 如果要复用抽象类里面的方法,并且要用抽象方法约束自

qq_41623635的博客 1519

【保姆级教程】教你如何轻松获取MIMIC数据使用权限

文章非常详细地介绍了MIMIC数据库申请使用的全部步骤。

越努力 越幸运 6600

Dart 中的抽象类与多态、接口

1. Dart中的抽象类 Dart抽象类主要用于定义标准,在抽象类中定义继承它的子类必须有哪些方法。 抽象类通过abstract关键字来定义,抽象类中没有方法体的方法称为抽象方法,类似于C++中的虚函数。 抽象类不能被实例化,只有继承它的子类才可以,子类必须实现抽象类里面定义的抽象方法才能实例化。 2. Dart中的多态 Dart中的多态与C++中的虚基类相似,允许将子类类型的指针赋值给父类类型的指针。 在实现上,将子类的实例赋值给父类的引用,父类的引用调用父类中存在的抽象类方法,从而间接的

分享前端工程化、AI 应用、Agent 开发与大模型实践! 1463

机器人控制仿真软件:MATLAB Simulink Control System Toolbox_(1).MATLAB基础知识

MATLAB(Matrix Laboratory)是由MathWorks公司开发的一种高性能数值计算和可视化软件。它广泛应用于科学计算、工程设计、信号处理、控制系统设计、图像处理等领域。强大的矩阵运算能力:MATLAB的核心是矩阵运算,能够高效处理大规模的数值数据。丰富的工具箱:MATLAB提供了大量的工具箱,如Control System Toolbox、Simulink、Signal Processing Toolbox等,这些工具箱覆盖了多个应用领域。易于使用的图形界面。

kkchenjj的博客 907

【数据集】全球预报系统GFS概述:数据下载及处理

【数据集】全球预报系统GFS概述:数据下载及处理

WW、forever的博客 5751

深入理解 Dart 中的抽象类、多态与接口

在 Dart 中,抽象类主要用于定义标准,就像制定一套规则,让其他类遵循。定义抽象类需要借助abstract关键字。比如,我们想要定义一个Animal类,以此来约束它的子类必须具备某种行为(比如吃东西的行为),就可以把Animal类定义为抽象类。// 定义抽象方法eat,子类必须实现void eat();这里的eat方法没有方法体,它就是一个抽象方法。在 Dart 里,没有方法体的方法即为抽象方法。在 Dart 编程中,抽象类、多态和接口各自发挥着重要作用。

m0_57836225的博客 780

《FPGA DDR3权威实战:从基础到高速故障录波系统》专栏导览:从不知所措到心中有数

本文是一份DDR3实战指南,作者从自身学习经历出发,分享了一套循序渐进的DDR3应用路线图。专栏包含12篇文章,从基础配置(MIG IP核、AXI总线)、仿真测试到实际项目应用(功能测试、性能测试),最后深入原生MIG接口实战,通过一个高速故障录播系统案例完整展示DDR3开发流程。文章特别强调实践性,旨在帮助读者系统掌握DDR3开发技能,避免作者当年踩过的坑。每篇都配有优快云链接,适合FPGA开发者按顺序学习参考。

FPGA_小田老师的博客 331

Flutter for OpenHarmony实战:Dart面向对象重构与跨端适配经验

Flutter作为跨端开发框架,在应对多平台适配时,代码的可维护性和可扩展性往往取决于底层语言的设计水平。Dart面向对象编程不仅是一套语法规则,更是控制项目复杂度、隔离平台差异的关键手段。通过定义抽象接口、划分类的职责、以及合理使用Mixin和Stream,开发者能够让业务逻辑与平台实现解耦,从而大幅降低后续适配成本。以Flutter for OpenHarmony实战为例,本文详细讲解了如何从强类型Model、Repository抽象、状态管理(Bloc/Cubit)以及EventChannel流式通信

weixin_29698641的博客 279

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Dart语法基础系列八《抽象类》

面试题千万不要死记,一定要自己理解,用自己的方式表达出来,在这里预祝各位成功拿下自己心仪的offer。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】[外链图片转存中…(img-HCex31j3-1714274962983)][外链图片转存中…(img-Qz0tkgmz-1714274962984)][外链图片转存中…(img-csYrFsvQ-1714274962985)][外链图片转存中…(img-YJIjGwWr-1714274962985)]

2401_84411767的博客 1037

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

(四十一)Dart 中的空安全与 `late` 关键字教程

空安全(Null Safety)是 Dart 语言的一项重要特性,旨在帮助开发者避免空指针异常(NullPointerException)。空安全通过在编译时检查变量是否可能为null,从而减少运行时错误。从 Flutter 2.2.0(2021年5月19日发布)开始,所有新项目都要求使用空安全。late通过使用late关键字,可以实现延迟初始化变量,从而提高代码的灵活性和可维护性。在实际开发中,合理使用late关键字可以让你的代码更加安全和高效。希望本教程对您有所帮助!

DoublePoint的博客 674

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Dart late 关键词

late 关键字主要用于延迟初始化 类里没有调用构造函数 值会报错 class Person { late String name; late int age; void setName(String name, int age) { this.name = name; this.age = age; } String getName() { return "${this.name}------${this.age}"; } } ...

qq_41623635的博客 582

[基础] Dart - 抽象类&抽象方法&接口

抽象类&抽象方法 关于Dart 语言的基础学习记录 Dart 官方网站 抽象类用 abstract 关键字声明 抽象类中没有方法体的方法是抽象方法 子类继承抽象类必须实现抽象类中的抽象方法 抽象类作为接口使用的时候必须实现所有的属性和方法 抽象类不能被实例化继承抽象类的子类可以 作为抽象类 继承的子类不需要对属性重写 接口的实现和差异 作为接口使用的时候 ...

RyccccCode 3584

Dart 2.13 之后的新特性:空安全、late 关键字、类型断言与 required 关键字

目录Dart 2.13 之后的新特性:空安全、late 关键字、类型断言与 required 关键字一、空安全(一)空安全的作用(二)非空类型与可空类型(三)方法返回值的可空类型二、类型断言(!)(一)类型断言的概念(二)在方法中的应用三、late 关键字(一)late 关键字的作用(二)在类中的使用(三)在抽象类中的使用四、required 关键字(一)required 关键字的作用(二)在函数中的使用(三)在类中的使用在 Dart 2.13 及后续版本中,引入了一系列实用的新特性,这些特性极大地提升了代

m0_57836225的博客 1285

Flutter -> dart 结束 (抽象类和接口)

dart 类 -> 抽象类 dart 抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口。 抽象类通过abstract 关键字来定义。 抽象类不可以被实例化,只有继承他的子类可以。 子类继承抽象类必须实现里面的抽象方法。 抽象类作为接口,必须实现抽象类里面的所有属性和方法。 多态就是父类定义一个属性或者方法,父类不去实现,让子类去实现,这就叫多态。 举个例子(抽象类/多态) /** 定义一个Animal 类要求它的子类必须包含eat方法 */ abstr

qq_43955202的博客 526

(Dart)用法补充

1.后置运算符 String? name; //加一个问号可以让静态检查通过,表示可空类型,String? 则是可空类型 String。 DateTime? _lastPressedAt; DateTime.now().difference(_lastPressedAt!) //作后缀的! 会让左侧的表达式转成对应的 非空类型 //与其他所有转换一样,使用 ! 会失去部分静态的安全性。这些转换必须在运行时进行 参考文章: Dart 后置操作符! flutter 问号符号 ...

weixin_45625639的博客 421

Dart中的抽象类

Dart中的抽象类

weixin_56617133的博客 287

(十九)Dart中的抽象类

Animal。

DoublePoint的博客 461

Dart【01】基本概念和变量

# 写在前面 本篇文章是《Dart教程》系列的第一篇,意在帮助有意学习Flutter的朋友了解Dart语言。

JackWu blog 867

Flutter学习之Dart 中的抽象类与接口、Mixins操作

Dart 中抽象类概述 抽象类使用 abstract 表示,不能直接被实例化 抽象方法不用 abstract 修饰,无实现 抽象类可以没有抽象方法 有抽象方法的类一定得定义为抽象类 抽象类中的方法写法 abstract class Person{ // 定义属性 String name = "人"; // 可以赋初始值 int age; // 定义方法 run(...

Wayfreem的博客 7177

无涯教程-Dart - 抽象类

抽象类是Dart中具有一个或多个抽象方法的类。抽象是数据封装的一部分,其中函数的实际内部工作对用户隐藏。它们仅与外部功能交互。我们可以使用abstract关键字声明abstract类。抽象类可能有也可能没有抽象方法。

无涯教程 679
上一篇: dart语法(一)
下一篇: vue拖拽生成动态表单(可缩放和自定义布局)
yang_web
博客等级 码龄6年 5粉丝 29原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值