can‘t be used as a mixin because it extends a class other than ‘Object‘.
创始人
2024-05-21 07:31:07
0

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

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();
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...