类的简介
类(class): 定义了一切事物的抽象特点(属性和方法)
对象(object): 类的实例(通过 new 来生成)
面向对象特点: 封装,继承,多态
- 封装: 将操作数据的细节隐藏起来,只暴露接口, 调用者只需要通过接口来访问对象
- 继承: 子类继承父类, 子类除了拥有父类的特性外还可以拥有更加具体的特性
- 多态: 同一个方法可以有不同的响应(猫和狗都继承自动物类,但是他们叫声各有不同)
在ts中如何使用class类呢?
定义
class
类名
{ }
使用
const
形参
= new类名
(传参
)
class Fn {
name: string = '你吃饭了吗?'
}
const fn = new Fn
console.log(fn.name)
我这里使用的是 Code Runner
这个插件,可以直接执行当前文件
ts
的class类和js
的class类有什么区别吗?
ts的特有属性:修饰符
public 公开的
默认公共 public
自由访问程序里定义的变量和方法
private 私有的
私有的 private
当成员被标记为私有属性,只能在类进行使用,不能外部使用,子类也不可访问
这边继承也是无法使用的
使用方式
protected 受到保护的
受保护的 protected
和private
相似,唯一不同的是,被protected
修饰的属性可以在子类中访问
static 静态的
当类中的方法被声明 为 static
时,其 实例化对象,不可调用该方法,只有类本身 ,以及其子类可以调用。
这里使用实例化打印Fn
这个类的时候,会发现定义static
的属性已经消失了
如何获取静态属性呢?
readonly 只读的
readonly
人们常常与const
相比,使当前的实例属性是只读
的,不可以修改
如何修改实例属性呢?
修改静态属性
如何获取readonly
的属性
当你要修改只读属性的时候
小锦囊
static
和 readonly
是可以一起使用的.
但是
划重点了啊
static
必须在前面,因为static
决定了你的访问方式,默认是实例化属性,但是是需要先将实例化属性改为静态属性才能继续获取到里面的参数