Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
it&s me
unidocs-zh
提交
19003918
U
unidocs-zh
项目概览
it&s me
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录