带你读《深入浅出Dart》九、多态

简介: 带你读《深入浅出Dart》九、多态

九、多态

多态是面向对象编程的三大特性之一(封装、继承和多态)。在 Dart 中,多态表现为父类引用指向子类对象。这样,父类的引用就可以根据当前指向的子类对象,动态地调用其相应的方法,这是面向对象非常重要的一个特性。

 

abstract class Animal {
  void eat();}
class Cat extends Animal {
  @override
  void eat() {
    print('Cat eating...');
  }}
class Dog extends Animal {
  @override
  void eat() {
    print('Dog eating...');
  }}
void feedAnimal(Animal animal) {
  animal.eat();}
var cat = Cat();var dog = Dog();feedAnimal(cat);  // 输出 Cat eating...feedAnimal(dog);  // 输出 Dog eating...

 

在上述例子中,feedAnimal 函数接受一个 Animal 类型的参数,然而在运行时,这个参数可以是任何一个 Animal 的子类的实例。这就是多态的体现。

1.抽象类

在 Dart 中,抽象类是一种特殊的类,它不能被实例化。抽象类用于定义一些基本的结构,而具体的实现则由继承抽象类的子类来完成。抽象类使用 abstract 关键字来定义。

 

abstract class Animal {
  void eat();  // 抽象方法}
class Cat extends Animal {
  @override
  void eat() {
    print('Cat eating...');
  }}

在上述例子中,Animal 是一个抽象类,它定义了一个抽象方法 eatCat 类继承了 Animal 类,并提供了 eat 方法的具体实现。

2.接口

Dart 中没有专门的接口关键字,类可以作为接口被其他类实现。实现接口需要使用 implements 关键字。

class Animal {
  void eat() {
    print('Eating...');
  }}
class Cat implements Animal {
  @override
  void eat() {
    print('Cat eating...');
  }}

在上述例子中,Animal 类作为接口被 Cat 类实现。Cat 类需要提供 Animal 中所有方法的实现。

 

这样我们就初步介绍了 Dart 中面向对象编程的主要概念和用法。实际上,Dart 中面向对象的特性还有很多,例如工厂构造函数、静态成员、Mixins 等。这些内容需要我们在日常的学习和实践中不断深入理解和掌握。

 

相关文章
|
自然语言处理 运维 小程序
分享99个PHP源码,总有一款适合您
分享99个PHP源码,总有一款适合您
421 1
|
机器学习/深度学习
信道编码译码及MATLAB仿真(三)
信道编码译码及MATLAB仿真
1089 3
|
人工智能 计算机视觉
教程 |【阿里云.人脸识别】Access Key ID 和 Access Key Secret 查看方法
本章主要介绍阿里云.人脸识别 Access Key ID 和 Access Key Secret 查看方法。
|
6月前
|
SQL 人工智能 供应链
技术向:如何在 AI Agent 框架下实现企业级业务的逻辑自洽与自动化闭环?
随着大语言模型(LLM)从单纯的“对话接口”演进为“行动中枢”,AI Agent(智能体)正成为企业数字化转型的核心架构。本文将深度探讨在企业级复杂业务场景下,如何构建具备**逻辑自洽**能力的 Agent 框架,并通过**全链路感知、决策与执行**实现真正的业务自动化闭环。
459 2
|
7月前
|
存储 芯片 异构计算
南京观海微电子---MIG IP核的使用——DDR接口专栏(二)
本文介绍Xilinx FPGA中MIG IP核的使用方法,涵盖DDR3颗粒选型、FPGA匹配、MIG参数配置及管脚分配等关键步骤,帮助用户实现对片外DDR存储器的高效读写操作。
南京观海微电子---MIG IP核的使用——DDR接口专栏(二)
|
7月前
|
人工智能 运维 安全
|
5月前
|
人工智能 缓存 算法
别再让语音机器人“答非所问”:AI Force任务型语音对话技术总结
本文围绕企业级任务型语音 Agent(如营销、催收、教培等场景)的核心挑战,提出:要让 AI 语音助手真正胜任“真人小二”角色,必须同步解决 “拟人化” 与 “专业化” 两大维度。
别再让语音机器人“答非所问”:AI Force任务型语音对话技术总结
|
10月前
|
机器学习/深度学习 传感器 算法
研究锂离子电池模型中的最佳性能和效率:对电池组配置、负载选择、放电倍率(C-rate)、容量和电量状态(SOC)的全面研究(Simulink仿真实现)
研究锂离子电池模型中的最佳性能和效率:对电池组配置、负载选择、放电倍率(C-rate)、容量和电量状态(SOC)的全面研究(Simulink仿真实现)
443 4
|
10月前
|
存储 安全 前端开发
CC&LG实践|基于 LangGraph 一步步实现 Claude-Code 核心设计
本文旨在深入剖析 Claude-Code 的核心设计思想与关键技术实现,逆向分析其功能模块,结合 LangGraph 框架的能力,系统性地演示如何从一个最基础的 ReAct Agent 出发,逐步构建一个功能完备的简版 Claude-Code。
5275 19
CC&LG实践|基于 LangGraph 一步步实现 Claude-Code 核心设计
|
人工智能 程序员 测试技术
游戏开发成本认知鸿沟:从民间臆测到3A现实的残酷距离-优雅草卓伊凡
游戏开发成本认知鸿沟:从民间臆测到3A现实的残酷距离-优雅草卓伊凡
698 16
游戏开发成本认知鸿沟:从民间臆测到3A现实的残酷距离-优雅草卓伊凡

热门文章

最新文章