TypeScript核心篇——类(class)-可选参数-存取器-构造函数-静态属性方法-抽象类
Posted 勇敢*牛牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeScript核心篇——类(class)-可选参数-存取器-构造函数-静态属性方法-抽象类相关的知识,希望对你有一定的参考价值。
传统的javascript程序使用函数和基于原型的继承来创建可重用的组件,
那么和es6一样的是class的继承和构造。
但不同的是typescript又多了以下属性,模仿java,c#面向对象构建出来三个修饰符 public protected private
:功能和java,c#基本一致,实现了面向对象式的发展。
class Box
public a:number=1;
protected b:number=2;
private c:number=3;
public play():void
console.log(this.a);
console.log(this.b);
console.log(this.c);
this.run();
this.jump();
protected run():void
private jump():void
var p = new Box();
公共,私有与受保护的修饰符public private protected
默认为public
* | public | protected | private | * |
---|---|---|---|---|
实例化对象 | 可以调用 | 不可调用 | 不可调用 | public是对外暴露的 |
在当前类中 | 可以调用 | 可以调用 | 可以调用 | |
继承后的子类中 | 可以调用 | 可以调用 | 不可调用 | 私有属性和方法不能在子类中调用 |
override 父类方法 | 可以重写 | 可以重写 | 不可以重写 | |
接口继承类 | 可以继承 | 不可以继承 | 不可以继承 | 只有全部都是public 属性方法的类才可以被接口继承 |
-
优先设定类中的属性和方法都是
private(私有的)
-
当需要继承时,并且需要通过继承后进行调用和覆盖重新方法时,需要调用和覆盖的方法属性,在父类中改为
protected受保护的
-
然后子类在调用这些方法属性时都使用
protected(受保护的)
-
当需要将类中属性和方法暴露在外,实例化对象可以调用的,修改为public 设置为公有的
可选参数
如果类中的属性设置类型并不包含undefined或者并不是可选属性,必须设置初始值,或者在构造函数中设置该值;
?:
可选属性
函数的参数中可以使用可选参数,必须写在必填参数后面,初始值参数可以放在可选参数后面
接口中可以使用可选参数
类中也可以使用可选参数
?.
当对象是一个可选属性时,调用对象的属性需要先判断这个对象是否赋值为对象了,还是undefined
if(this.obj)
this.obj.a=10;
console.log(this.obj?.a)
可以将这种方式简略为 this.obj?.a
存取器
class Box
private _step:number= 1;
constructor()
// 存取器中set方法不要设置返回类型,参数必须要设置类型
public set step(value:number)
this._step = value;
// 存取器中get方法必须要设置返回类型
public get step()
return this._step;
var b = new Box();
构造函数
构造函数不能设置返回值
构造函数可以使用private和protected 设置,但是如果这样设置就无法在外面new这个构造函数了,
(单例模式要用)
class Box
private constructor()
var b:Box=new Box(); //:Box 不能设置
静态属性和方法
静态属性可以不用设置初始值
当调用静态属性和方法时,通知都是使用类名调用
禁止在静态方法中使用this,虽然可以使用,但是这里强调大家不要使用,以防止和实例方法中this的区分
class Box
public static a:number;
private static b:number;
protected static c:number;
public static play():void
// this.a
// Box.a
Box.play();
console.log(Box.a)
抽象类
这个抽象类是不能实例化的
抽象类的作用是作为基类使用,用来继承的
接口中是完全没有实现任何功能,只有方法名和属性名
在抽象类实现了部分方法的功能,并且设置了一些类似接口的方法名和属性名
在继承抽象类后,由个子类分别实现
abstract class Box
public a:number=1;
public abstract update():void;
public abstract b:number;
public play():void
console.log("aaa")
protected run():void
console.log("bbb");
class Ball extends Box
public b: number=1;
public update(): void
以上是关于TypeScript核心篇——类(class)-可选参数-存取器-构造函数-静态属性方法-抽象类的主要内容,如果未能解决你的问题,请参考以下文章