我从与 swift 的区别中总结了 Dart 中对接口的处理。
获取/设置是已知的。
什么是接口?
第一的,界面被面向对象编程识别没有具体实现的抽象类型那就是我的意思。
迅速协议关键字使用实现
// Buildingプロトコルの定義
protocol Building {
var height: Double { get }
var area: Double { get }
func volume() -> Double
}
// Buildingプロトコルに準拠したHouseクラス
class House: Building {
let height: Double
let area: Double
init(height: Double, area: Double) {
self.height = height
self.area = area
}
func volume() -> Double {
return height * area
}
}
比如我们这里去掉Houseクラス
定义的定数area
的声明部分。
然后我收到这样的错误消息:
Type 'House' does not conform to protocol 'Building'
事实证明,在接口内(在 Swift 中,在协议内)定义的任何东西都必须以符合该接口的类型实现。
Dart 中的接口
现在让我们看看接口是如何在 Dart 中实现的。
官方文件如果你检查 ,你会发现这样的陈述:
Dart 没有 interface 关键字,而是所有类都隐式定义了一个接口。
翻译过来,Dart 语言有接口关键字(swift中的协议)不存在,而是在所有类型中隐式接口据说是定义的。
官方文件让我们根据介绍的程序示例来检查它。官方程序示例class Person { // interfaceが存在している final String _name; String greet(String who) => 'こんにちは、$who。私は$nameです。'; // コンストラクタにはinterfaceは存在していない Person(this._name); } class Impostor implements Person { String get _name => ''; String greet(String who) => 'こんにちは、$who。私が誰だか知っていますか?'; }
implements
表示某个类(接口)符合。
在Personクラス
中定义的final変数 _name
和greet関数
必须在Impostorクラス
中基于接口透视图重新定义。那么,总的来说,我们如何在 Dart 中表达 protocol 关键字在 swift 中的作用?
抽象关键词
抽象关键词是 Dart 在创建抽象类型时使用的。
让我们检查一下 Dart 中的实现示例。dart 中的实现示例abstract class Building { final double height; final double area; Building({required this.height, required this.area}); double? volume() {} } class House implements Building { final double height; final double area; House({required this.height, required this.area}); double volume() { return this.height * this.area; } } void main() { final House house = House(height: 100, area: 100); print(house.volume()); }
通过将 abstract 关键字添加到
Buildingクラス
,现在可以将其视为像 swift 一样的抽象类型接口。参考页
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308633010.html