如题,本篇介绍下ts中类 、对象 、静态方法 、继承、类中成员返回修饰符等。
ts中类继承类似于传统面向对象编程语言中的继承体系 ,使用extends关键字继承,类中this表示此当前对象本身,super表父类对象。子类构造函数中第一行代码调用父类构造函数完成初始化,然后再进行子类的进一步初始化。子类中可以访问父类(public、protected)的成员属性、方法。
02_class.ts
/*
* ts中类 对象 静态方法 继承
*
* ts中类继承类似于传统面向对象编程语言中的继承体系 ,使用extends关键字继承,
* 类中this表示此当前对象本身,super表父类对象。
*
* */
//es5中类
// function Perosn(name,age){
// this.name=name;
// this.age=age;
//
// this.sayHi=function(){
// return "hi,我的姓名是:"+this.name+",我年龄是:"+this.age;
// }
// }
//
// var p=new Perosn("张三",22);
// console.log(p.sayHi());
//ts 中类
class Person{
name:string ;//实例属性
age:number;//实例属性
//构造函数
constructor(name,age){
this.name=name;
this.age=age;
}
//实例方法
sayHi(){
return "hi,我的姓名是:"+this.name+",我年龄是:"+this.age;
}
//静态方法
static hello(){
console.log("hello!!");
}
//静态属性
static PI:number=Math.PI;
//静态方法中可以返回静态属性,,静态成员只能使用类名.静态成员的方式进行访问。
static area(r:number){
return Person.PI * r*r;
}
}
//计算r为3的圆的面积 ,调用静态方法不需要new实例对象,直接用类名.静态方法调用即可。
console.log(Person.area(3)); //28.274333882308138
//new 对象
var p = new Person("张三", 22);
//调用对象的(实例)方法
console.log(p.sayHi());
class Student extends Person{
score:number;//学生成绩,新的成员属性
constructor(name,age,score){
//子类调用父类构造函数进行初始化
super(name,age);
this.score=score;
}
//子类重写(覆盖)父类中的方法
sayHi(){
return "hi,我的姓名是:"+this.name+",我年龄是:"+this.age+",我的成绩是:"+this.score;
}
//子类中扩展的方法
study(){
return this.name+"在学习";
}
}
var stu=new Student("李四",24,90);
console.log(stu.sayHi());
console.log(stu.study());
/*
关于类中成员访问修饰符:
ts类中成员(成员属性、成员方法)的访问修饰符,类似于java中类成员的访问修饰符,不同的是ts中默认是被public修饰。
public :公有 在当前类里面、 子类 、类外面都可以访问
protected:保护类型 在当前类里面、子类里面可以访问 ,在类外部没法访问
private :私有 在当前类里面可以访问,子类、类外部都没法访问
属性如果不加修饰符 默认就是公有(public)
*/