can‘t be used as a mixin because it extends a class other than ‘Object‘.

news2024/11/15 3:41:59

程序员如果敲一会就停半天,抱着一杯茶,表情拧巴,那才是在编程

Flutter 项目开发指导 从基础入门到精通使用目录


前言 - 基础关键字

  • class:声明一个类,提供具体的成员变量和方法实现。
  • abstract class:声明一个抽象类,抽象类将无法被实例化。抽象类常用于声明接口方法、有时也会有具体的方法实现。
  • mixin:声明一个Mixin类,与抽象类一样无法被实例化,是一种在多重继承中复用某个类中代码的方法模式,可以声明接口方法或有具体的方法实现。
  • extends:继承,和其它语言的继承没什么区别。
  • with:使用Mixin模式混入一个或者多个Mixin类。
  • implements:实现一个或多个接口并实现每个接口定义的API。
  • on:限制Mixin的使用范围。

1 错误信息

Error: The class ‘B’ can’t be used as a mixin because it extends a class other than ‘Object’.
class C extends A with B{
^
Error: Compilation failed.

在这里插入图片描述

2 测试核心代码

测试使用工具 dartPad

https://dartpad.dartlang.org/flutter

class A {
  void run(){
    print("a run");
  }
}

class B extends A{
  void run(){
    print("b run");
  }
}

class C extends A with B{
  
}
void main() {
  C c = C();
  c.run();
}

3 Dart with 关键字

关键字with表示使用了"Mixin"
mixin指的是将另一个或多个类的功能添加到您自己的类中,而不从这些类继承的能力.这些类的方法现在可以在类上调用,这些类中的代码将被执行.

Dart没有多重继承,但mixin的使用允许您在其他类中折叠以实现代码重用,同时避免多重继承可能导致的问题.
如下定义两个类A、B,分别有自己的方法,A与B分别是抽象的,不可直接创建实例:

abstract class A {
  void run() {
    print("a run");
  }
  void show(){
  }
}

abstract class B {
  void run() {
    print("b run");
  }

  void eat() {
    print("b eat");
  }
}

再定义类C,要求C具备A与B的能力,可以定义如下:

class C extends A with B {
  
}

如果要使 B 再具备 A的能力:

abstract class A {
  void run() {
    print("a run");
  }
  void show(){
  }
}

abstract class B extends A{
  void run() {
    print("b run");
  }

  void eat() {
    print("b eat");
  }
}

如果B再继承A,那么上述定义的类C就会出现异常

Error: The class ‘B’ can’t be used as a mixin because it extends a class other than ‘Object’.
class C extends A with B{

正确的做法:

abstract class A {
  void run() {
    print("a run");
  }

  void show() {
    print("a show");
  }
}

mixin B on A {
  void run() {
    print("b run");
  }

  void eat() {
    print("b eat");
  }
}

class C extends A with B {}

void main() {
  C c = C();
  c.run();
  c.eat();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

27.日志技术、XML

目录 一.日志技术 1.1 什么是日志 1.2 目前记录日志的方案 1.3 日志技术的优势 1.4 日志技术体系 1.5 Logback框架 1.5.1 下载地址 1.5.2 模块组成 1.5.3 Logback的使用 二.XML 2.1 XML概述 2.2 XML的特点 2.3 XML文件的使用场景 2.4 XMl文件的创建 2.5 XML的语法…

江瀚新材登陆上交所主板:募资约24亿元,甘书官父子为实际控制人

1月31日,湖北江瀚新材料股份有限公司(下称“江瀚新材”,SH:603281)在上海证券交易所主板上市。本次上市,江瀚新材公开发行股票66,666,667股,发行价格为35.59元/股,发行市盈率为14.80倍。 按发行…

更高性能表现、更低资源占用,高精度计算数据类型 DecimalV3 揭秘

数值运算是数据库中十分常见的需求,例如计算数量、重量、价格等,为了适应多样化运算场景,数据库系统通常支持精准的数字类型和近似的数字类型,当我们需要精确地表示小数并计算小数时,通常会考虑使用 Decimal 数据类型。…

低代码编程核心技术概念

从技术概念来讲,低代码编程跟通用编程是完全一致的。要利用好低代码编程工具,至少要掌握下面的技术概念。低代码编程核心技术概念一、数据结构这里的数据结构,指一般意义上的数据表和数据字段。 类似于数据库中的表及字段的概念,也…

蓝桥杯2022 A组 python

蓝桥杯2022 A组 python A组相对于B组就五道题不一样 第一题:裁纸刀 就先把四个边剪一下,然后先行后列,蛮简单的 # 20行 横着19刀,竖着21*20 print(1921*204)第三题:质因数个数 这题我感觉就是跟一个约数个数的模板一…

【python】Twisted网络编程

Twisted什么是Twisted?为什么使用twisted?Twisted 写TCP通信基本实例- TCP服务端- TCP客户端Twisted的Deferred机制Why Deferred?Deferred TCP-ECHO客户端实现- TCP client为例,什么是Twisted? Twisted是一种非阻塞的网络服务器…

useEffect 依赖项为对象或数组时,引发不断重渲染问题的原因及解法

转载自 https://www.izhaoo.com/2021/11/01/useEffect-object-dependent/背景今天封了个轮子,对组件传入参数生成对应的动画实例,当入参变化时重新渲染新实例。自然而然想到的就是 useEffect 监听 props 依赖了,如:useEffect(() &…

ESD器件(TVS)选型考虑

参考:TOSHIBA《Basics of ESD Protection (TVS) Diodes》①VRWM: Working peak reverse voltage工作峰值反向电压:ESD保护二极管显示非常高的阻抗。高于这个电压,会通过指定大小漏电流。设计的时候,信号的最大出现电压要在这个电压…

Java基础漏洞(六)

巩固Java基础,基于韩顺平老师的课程,Java的封装、继承、多态、super()、this()、重载与重写的区别......,下面我们一点点来巩固练习。 (1)继承 继承细节1:子类无法继承父类的私有 图1 我们定义一个父类f…

Ansys Zemax | 利用 TrueFreeForm 面进行网格自由曲面的优化

在这篇文章中,我们将演示如何使用 OpticStudio 的 TrueFreeForm 面,设计AR/VR设备中的人眼追迹系统(eye-tracking subsystem),这个系统通常位于装置的楔形透镜结构中。此外,为了完成子孔径(sub-…

JSBridge:混合开发中的双向通信[Android、iOSJavaScript]

什么是WebView WebView 是移动端中的一个控件,它为 JS 运行提供了一个沙箱环境。WebView 能够加载指定的 url,拦截页面发出的各种请求等各种页面控制功能,JSB 的实现就依赖于 WebView 暴露的各种接口。 由于历史原因,IOS以8为分界…

【Java AWT 图形界面编程】事件处理机制 ② ( Frame 窗口事件监听器 WindowListener | 代码示例 )

文章目录一、Frame 窗口事件监听器 WindowListener二、Frame 窗口事件监听器 WindowListener 代码示例一、Frame 窗口事件监听器 WindowListener 在 AWT 中 , 为 Frame 窗口 添加 窗口事件监听器 WindowListener , 可以监听窗口的操作 , 如 : 窗口显示 WindowListener#windowO…

leetcode 1626. Best Team With No Conflicts(最佳无冲突团队)

scores数组中是每个队员的得分,ages数组中为对应队员的年龄, 现在要从这个队里挑选出一些队员,使总得分最高, 挑选时年龄大的要比年龄小的score更高(严格大于),才不会产生冲突。 返回最高的得分…

【nestjs+VueJs全栈】- 后端搭建和数据库抽离

先补充一些nestjs的前置知识 控制器 控制器负责处理传入的请求和向客户端返回响应。 控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器有多个路由,不同的路由可以执行不同的操作。 为了创建一个基本的控制器…

React 组件基础

文章目录1. React 组件的两种创建方式1 使用函数创建组件2 使用类创建组件3 抽离为独立 JS 文件2. React 事件处理1.事件绑定2 事件对象3. 有状态组件和无状态组件4. 组件中的 state 和 setState1 state的基本使用2 setState()修改状态从 JSX 中抽离事件处理程序5.事件绑定 thi…

Python初学如何逆袭高手?22个万能公式汇总大全

嗨害大家好鸭!我是小熊猫~ 本篇文章共22个万能公式~ 初学者友好~ 源码资料电子书:点击此处跳转文末名片获取 1、一次性进行多个数值的输入 对于数值的输入问题, 是很多笔试题目中经常遇到的问题, 一次性输入多个参数值 , 可以节…

AppiumDesktop学习总结

Appium学习总结 文章目录Appium学习总结一、简介二、环境准备1.下载并配置安卓SDK环境变量2.下载及安装AppiumDesktop3.安装AppiumDesktop4. 启动AppiumDesktop5.安装Python3.x环境6.安装Appium的Python客户端7.安装安卓模拟器8.安装被测APP:9.连接安卓设备三、运行…

NCRE二级 《MS Office高级应用》备考之路

文章目录一、WORD一、易考点二、解题思路二、EXCEL一、易考点二、解题思路三、PPT一、易考点二、解题思路四、其他一、WORD 一、易考点 1.设置页边距、纸张方向、纸张大小、装订线位置,分栏。 2.设置主题、页面边框、添加水印。 3.设置段间距、行间距、特殊格式&…

MySQL从入门到精通(第一篇):MySQL的基本语法及其设计,结合多篇文章

MySQL目录一、数据库入门1. 数据管理技术的三个阶段2. 关系型数据库与非关系型数据库3. 四大非关系型数据库a. 基于列的数据库(column-oriented)b. 键值对存储(Key-Value Stores)c. 文档存储(Document Stores&#xff…

【日志首次上报积分最多】

题目描述 【日志首次上报最多积分】 日志采集是运维系统的的核心组件。日志是按行生成,每行记做一条,由采集系统分批上报。 如果上报太频繁,会对服务端造成压力;如果上报太晚,会降低用户的体验; 如果一次上报的条数…