【4】静态方法
class Person{
name:string;
constructor(name:string){
this.name = name;
}
getName():string{
return `获取到的名字是:${this.name}`;
}
static stac(){//创建静态方法
return `这是一个静态方法`;
}
}
//var p = new Person('jack');
//console.log(p.getName());
console.log(Person.stac());//静态方法的调用 Person.stac()
问题:静态方法可以直接获取类里面的属性吗?
class Person{
name:string;
age:number=18;
constructor(name:string){
this.name = name;
}
getName():string{
return `获取到的名字是:${this.name}`;
}
static stac(){//创建静态方法
return `这是一个静态方法+${this.age}`;//这是一个静态方法+undefined 获取到类里面的属性是undefined
//静态方法, 里面没法直接调用类里面的属性
}
}
// var p = new Person('jack');
// console.log(p.getName());
console.log(Person.stac());//静态方法的调用 Person.stac()
答案是静态方法里面试没法直接调用类里面的属性的
问题: 那静态方法里怎么可以获取到类里面的属性呢???
答:将属性设置为静态 static
请看代码
class Person {
static age:number=12;
static getAge(){
return `下面来获取下这个人的年纪是:${this.age}`
}
}
console.log(Person.age);
console.log(Person.getAge());
【5】多态:父类定义一个方法不去实现,让继承它的子类实现 每一个子类有不同的表现
class Anmial{
food:string;
constructor(name:string){
this.food = name;
}
eat(){//具体吃什么不知道 ,具体吃什? 谁继承它的子类去实现 ,每一个子类的表现不一样
console.log('吃东西');
}
}
class Dog extends Anmial{
constructor(food:string){
super(food);
}
eat(){
return `小狗在吃${this.food}`;
}
}
var d = new Dog('骨头');
console.log(d.eat());
class Cat extends Anmial{
constructor(food:string){
super(food)
}
eat(){
return `小猫在吃${this.food}`;
}
}
var cat = new Cat('鱼');
console.log(cat.eat());
【6】抽象类
typescript 中的抽象类:它是提供其他类继承的基类,不能直接被实例化。
用abstract 关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。
abstract 抽象方法只能放在抽象类里面
抽象类和抽象方法用来定义标准,标准:Animal 这个类要求它的子类必须包含eat方法。
abstract class Anmial{
name:string;
constructor(name:string){
this.name = name;
}
abstract eat():any;
// abstract eat(){
// }
}
//var a = new Anmial();//这样写是错误的,typescript 中的抽象类:它是提供其他类继承的基类,不能直接被实例化。
class Dog extends Anmial{
constructor(name:string){
super(name);
}
eat(){//必须在子类里写eat的实现方法
console.log(`${this.name}在吃骨头`);
}
}
class Cat extends Anmial{//必须在子类里写eat的实现方法
constructor(name:string){
super(name);
}
eat(){
console.log(`${this.name}在吃鱼`);
}
}
var d = new Dog('小狗1');
d.eat();
var ca = new Cat('小猫1');
ca.eat();