一、static
静态方法或静态属性,通过类名去调用。是整个类的公有属性或公有方法。不是某一个对象的单一属性。
class Girl{
public static sex:string = "女"
private name:string;
private age:number;
static sayName():void{
console.log(Girl.sex);
}
constructor(name:string,age:number){
this.name = name;
this.age = age;
}
}
var g:Girl = new Girl("jiangwei",18);
console.log(Girl.sex);
当我们需要在一个类(class)中定义一个属性为公共的属性
,就好比说我们需要这个属性是所有类都是共有的,并且这个属性的值是同一个
static 方法就是没有 this 的方法。在 static 方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用 static 方法。这实际上正是 static 方法的主要用途。
二、抽象类
用abstract关键字定义抽象类和抽象方法。抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。
Tip:抽象类无法被直接实例化。
abstract class Animal{
abstract eat():void;
}
class Dog extends Animal{
eat(): void {
console.log("吃骨头")
}
}
class Cat extends Animal{
eat(): void {
console.log("吃鱼")
}
}
三、多态
父类定义一个方法不去实现,子类继承父类去实现这个方法,调用的时候有不同的表现。
abstract class Animal{
abstract eat():any;
}
class Dog extends Animal{
eat(): void {
console.log("吃骨头")
}
}
class Cat extends Animal{
eat(): void {
console.log("吃鱼")
}
}
class Girl{
call(s:Animal):void{
s.eat();
}
}
var jiang:Girl = new Girl();
var dog:Animal = new Dog();
var cat:Animal = new Cat();
jiang.call(dog);
jiang.call(cat);