Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
6cccd25a
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3217
Star
106
Fork
816
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
95
列表
看板
标记
里程碑
合并请求
70
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
95
Issue
95
列表
看板
标记
里程碑
合并请求
70
合并请求
70
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
6cccd25a
编写于
8月 16, 2023
作者:
Q
qiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: update class doc
上级
4dfe3341
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
106 addition
and
0 deletion
+106
-0
docs/uts/class.md
docs/uts/class.md
+106
-0
未找到文件。
docs/uts/class.md
浏览文件 @
6cccd25a
...
...
@@ -319,9 +319,79 @@ class FilledRectangle extends Rectangle {
super
.
draw
();
}
}
```
### 接口(interface)@interface
接口提供了一种约定,用于确保对象的属性和方法遵循特定的模式。接口可以被类所采用,以提供具体的实现。接口可以包含抽象的声明,但不能包含具体的实现。
接口使用关键字
`interface`
声明。
```
ts
interface
IPerson
{
name
:
string
;
printName
():
void
;
}
```
#### 接口继承
接口可以继承一个或多个接口:
```
ts
class
IPerson1
extends
IPerson
{}
```
#### 实现接口
类可以实现一个或多个接口:
```
ts
class
Person
implements
IPerson
{
constructor
(
public
name
:
string
)
{}
printName
()
{
console
.
log
(
this
.
name
);
}
}
```
### 抽象类(Abstract Class)@abstract-class
抽象类是一种用于提供基础类和共享实现的特殊类。尚未实现的属性和方法是抽象属性和抽象方法统称为抽象成员,抽象成员必须存在于抽象类中。抽象类本身不能被实例化,它只能作为其他类的基类,被其他类继承并实现其抽象成员。
通过使用
`abstract`
关键字来声明抽象类以及抽象类中的抽象成员。抽象类还可以包含具体实现。
```
ts
abstract
class
APerson
{
// 抽象属性
abstract
name
:
string
// 具体属性
age
:
number
=
0
// 抽象方法
abstract
printName
():
void
// 具体方法
printAge
()
{
console
.
log
(
this
.
name
)
}
}
```
#### 继承抽象类
抽象类可以被其他类继承。子类继承抽象类后,需要实现抽象类中的抽象成员。
```
ts
class
Person1
extends
Person
{
name
:
string
constructor
(
name
:
string
)
{
super
()
this
.
name
=
name
}
printName
():
void
{
console
.
log
(
this
.
name
)
}
}
```
### 可见性修饰符@modifier
...
...
@@ -375,3 +445,39 @@ console.log(howard.name); // 错误
```
注意,我们不能在 Person 类外使用 name,但是我们仍然可以通过 Employee 类的实例方法访问,因为 Employee 是由 Person 派生而来的。
### 类型兼容性
由于 UTS 语言最终会转换为 kotlin、swift 等语言,UTS 语言中的接口也更接近 kotlin 中的接口或 swift 中的协议,在类型兼容性判断时与 TS 语言的结构类型系统有着明显的区别:
-
TS:如果两个类型的内部结构相似(具有相同的属性和方法),那么它们被认为是兼容的,即使它们的名称不同。
-
UTS:依赖于类型的显式声明,必需是同一个类型或者存在显式的继承/实现关系。
```
ts
interface
IPerson
{
name
:
string
;
printName
():
void
;
}
class
Person
implements
IPerson
{
constructor
(
public
name
:
string
)
{}
printName
()
{
console
.
log
(
this
.
name
);
}
}
class
Person1
{
constructor
(
public
name
:
string
)
{}
printName
()
{
console
.
log
(
this
.
name
);
}
}
class
Person2
extends
Person
{}
const
person
:
IPerson
=
new
Person
(
"
Tom
"
);
// 正确,Person 实现自 IPerson
const
person1
:
Person
=
new
Person1
(
"
Tom
"
);
// 错误,Person 与 Person1 无任何关系
const
person2
:
Person
=
new
Person2
(
"
Tom
"
);
// 正确,Person2 继承自 Person
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录