类的定义
class Person {
public name:string; // 公共属性
constructor (n:string) { // 构造函数 实例化类的时候触发的方法
this.name = n
}
run():void {
console.log(this.name)
}
}
var p = new Person('张珊');
p.run();
继承,关键字(extends, super)
class Person {
name:string;
constructor(n:string) {
this.name = n;
}
run():void{
console.log(this.name)
}
}
// 继承
class Children extends Person{
constructor(name:string) {
super(name); // 就相当于在调用父类的构造函数
}
work():void{
console.log(this.name)
}
}
var child = new Children('李四');
child.run() // 李四
child.work() // 李四
// 在子类也可创建一个和父类相同名字的方法,
// 在调用的时候会先去调用自己本身,如果本身没有该方法,则到父类中找
类里面的修饰符
-
public
公有属性 注:在类里面、子类、类外部都可以访问通过这个修饰符定义的属性 -
protected
保护类型 注:在类里面、子类中可以访问定义的属性,在类的外部不能访问 -
private
私有属性 注:在类里面可以访问,但是在子类和类的外面不能访问
class Person {
public name:string; // 表示公有属性
protected age:number; // 表示保护类型的属性
private sex:string; // 表示是有属性
}
静态属性、静态方法
类中的静态方法没法直接调用类的属性,只能调用类的静态属性,定义静态方法和静态属性,需要在前面加一个关键字 static
class Person {
public name:string;
constructor(name:string) {
this.name = name;
}
static sex:string = "男"; // 定义类中的静态属性
static showSex():void{ // 定义类中的静态方法
console.log(this.sex)
}
}
多态
概念:父类定义一个方法不去实现,让继承它的子类去实现,每一个子类都有不同的表现,多态也属于继承
抽象类、抽象方法
-
抽象类和抽象方法的特点
1、typescript中的抽象类是提供其他类继承的基类,不能直接被实例化
2、用 abstract 关键字定义抽象类和抽象方法,抽象类中的抽象方法不需要具体实现,但是必须要在子类中实现
3、抽象方法只能在抽象类中出现
4、抽象类和抽象方法主要用来定义标准,例如:在Person这个抽象类中,有一个work的抽象方法,这个抽象方法不需要具体实现逻辑处理,但是在Person的子类中必须要实现work这个方法
abstract class Person{ // 定义抽象类
public name:string;
constructor(name:string) {
this.name = name;
}
abstract work():any; // 定义抽象方法
}
class Child extends Person{
constructor(name:string){
super(name)
}
work() {
console.log('在子类中实现逻辑处理')
}
}
const c = new Child('张山');
c.work();