typescript(四)--ts中类、对象、静态方法、继承

如题,本篇介绍下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)
*/

 

你可能感兴趣的:(typescript)