Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
19003918
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3216
Star
106
Fork
815
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
94
列表
看板
标记
里程碑
合并请求
70
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
94
Issue
94
列表
看板
标记
里程碑
合并请求
70
合并请求
70
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
19003918
编写于
11月 20, 2022
作者:
W
wanganxp
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更正uts语法文档中继承章节
上级
9f735502
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
24 addition
and
18 deletion
+24
-18
docs/tutorial/syntax-uts.md
docs/tutorial/syntax-uts.md
+24
-18
未找到文件。
docs/tutorial/syntax-uts.md
浏览文件 @
19003918
...
...
@@ -21,7 +21,9 @@ uts 采用了与 ts 基本一致的语法规范,支持绝大部分 ES6 API。
## 基本语法
### 声明
uts 有两种声明方式
js是无类型的,TypeScript 的 type 就是类型的意思,给js加上了类型。它的类型定义方式是在变量名后面通过加冒号和类型来进行定义。
uts 中声明变量可以用 let 或 const,详见下。
1.
let
...
...
@@ -902,9 +904,11 @@ ClassWithStaticMethod.staticMethod(); // 不实例化,直接调用class的方
### 继承(extends)@extends
uts 允许使用继承来扩展现有的类。扩展的派生类继承了父类的属性方法,但又可以添加自己独有的属性方法,以及复写父类定义的属性方法。
uts 允许使用继承来扩展现有的类。扩展的子类继承了父类的属性方法,但又可以添加自己独有的属性方法,以及复写父类定义的属性方法。
被继承的类称为父类(也称为超类、基类),新扩展的类称为子类(也称为派生类)。
被继承的类称为父类(如果是顶级类也称为超类),新扩展的类称为派生类(也称为子类)
。
比如定义了Person类存储人的基本信息,还可以定义一个Developer子类继承自Person类,在子类里追加Developer的独有信息
。
-
语法:
...
...
@@ -914,24 +918,24 @@ class ChildClass extends ParentClass { ... }
-
描述:
extends 关键字用来创建一个类的
派生
类。
extends 关键字用来创建一个类的
子
类。
-
示例:
```
ts
// 定义父类
class
Person
{
name
:
string
=
""
;
constructor
(
newname
:
string
)
{
this
.
name
=
newname
;
}
name
:
string
=
""
;
constructor
(
newname
:
string
)
{
this
.
name
=
newname
;
}
// 定义派生类
}
// 定义子类
class
Developer
extends
Person
{
likeLanguage
:
string
=
"
ts
"
}
let
d
=
new
Developer
(
"
tom
"
);
// 实例化。由于
派生
类没有声明和复写自己的构造函数,所以默认继承了父类的构造函数
let
d
=
new
Developer
(
"
tom
"
);
// 实例化。由于
子
类没有声明和复写自己的构造函数,所以默认继承了父类的构造函数
console
.
log
(
d
.
name
);
// tom
console
.
log
(
d
.
likeLanguage
);
// ts
```
...
...
@@ -941,7 +945,9 @@ console.log(d.likeLanguage); // ts
#### 覆盖方法(override)
uts 对于可覆盖的成员以及覆盖后的成员需要显式修饰符:
覆盖,也称为复写、重写。在继承中,用于在子类中改写父类定义的方法或属性。
uts 对于可覆盖的成员以及覆盖后的成员需要显式修饰符override。
```
ts
class
Polygon
{
...
...
@@ -961,7 +967,7 @@ Square.name 函数上必须加上 override 修饰符。如果没写,编译器
#### 覆盖属性
属性与方法的覆盖机制相同。
在超类中声明然后在派生类中重新声明的属性必须以 override 开头,并且它们必须具有兼容的类型
。
属性与方法的覆盖机制相同。
父类中已声明的同名属性,在子类中重新声明必须以 override 开头,并且它们必须具有兼容的类型(都是字符串、或数字、布尔值等)
。
```
ts
class
Shape
{
...
...
@@ -973,9 +979,9 @@ class Rectangle extends Shape {
}
```
#### 调用
超
类实现
#### 调用
父
类实现
派生类中的代码可以使用 super 关键字调用其超类的函数实现:
子类中的代码可以使用 super 关键字调用其父类的方法。不能跨级调用父类的父类(爷爷类)的方法。
```
ts
class
Rectangle
{
...
...
@@ -1005,16 +1011,16 @@ class FilledRectangle extends Rectangle {
当成员被标记成 private 时,它就不能在声明它的类的外部访问。比如:
```
ts
class
Cat
{
class
Person
{
private
name
:
string
=
"
Cat
"
;
}
new
Cat
().
name
;
// 错误: 'name' 是私有的.
new
Person
().
name
;
// 错误: 'name' 是私有的.
```
#### protected
protected 修饰符与 private 修饰符的行为很相似,但有一点不同,protected 成员在派生类中仍然可以访问。比如:
protected 修饰符与 private 修饰符的行为很相似,但有一点不同,protected 成员在
继承的
派生类中仍然可以访问。比如:
```
ts
class
Person
{
...
...
@@ -1097,7 +1103,7 @@ const test = new Test()
test
.
test
()
```
## 内置对象
## 内置对象
和API
uts 有一批内置对象。不管将 uts 编译为 js/kotlin/swfit,这些内置对象都可以跨平台使用。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录