TypeScript Basic Tutorial (5)


ts中类的定义

ES5中的类定义

function Person(name){
  this.name=name;
  this.run=function(){
    console.log(this.name)
  }
}

var p=new Person('张三');
p.run()

ts中定义类

class Person{
  name:string;   //属性  前面省略了public关键词
  constructor(n:string){  //构造函数   实例化类的时候触发的方法
  this.name=n;
}

run():void{
    alert(this.name);
  }
}

var p=new Person('张三');
p.run()
class Person{
name:string; 
constructor(name:string){  //构造函数   实例化类的时候触发的方法
  this.name=name;
}

getName():string{
  return this.name;
}

setName(name:string):void{
    this.name=name;
  }
}

var p=new Person('张三');
alert(p.getName());
p.setName('李四');
alert(p.getName());

ts中实现继承 extends、 super

class Person{
  name:string;
  constructor(name:string){
    this.name=name;
  }
  run():string{
    return `${this.name}在运动`
  }
}

var p=new Person('王五');
alert(p.run())

class Web extends Person{
  constructor(name:string){
    super(name);  /*初始化父类的构造函数*/
  }
}

var w=new Web('李四');
alert(w.run());

ts中继承的探讨 父类的方法和子类的方法一致

class Person{
  name:string;
  constructor(name:string){
    this.name=name;
  }
  run():string{
  return `${this.name}在运动`
  }
}

// var p=new Person('王五');
// alert(p.run())

class Web extends Person{
  constructor(name:string){
    super(name);  /*初始化父类的构造函数*/
  }
  run():string{
    return `${this.name}在运动-子类`
  }

  work(){
    alert(`${this.name}在工作`)
  }
}

var w=new Web('李四');
// alert(w.run());
// w.work();
alert(w.run());//优先在子类里面找 没有再去父类里面找

类里面的修饰符 typescript里面定义属性的时候给我们提供了 三种修饰符

  • public :公有 在当前类里面、 子类 、类外面都可以访问
  • protected:保护类型 在当前类里面、子类里面可以访问 ,在类外部没法访问
  • private :私有 在当前类里面可以访问,子类、类外部都没法访问

PS: 属性如果不加修饰符 默认就是 公有 (public)

  1. public :公有 在类里面、 子类 、类外面都可以访问
class Person{
  public name:string;  /*公有属性*/
  constructor(name:string){
    this.name=name;
  }

  run():string{
    return `${this.name}在运动`
  }
}

// var p=new Person('王五');
// alert(p.run())

class Web extends Person{
  constructor(name:string){
    super(name);  /*初始化父类的构造函数*/
  }

  run():string{
    return `${this.name}在运动-子类`
  }

  work(){
    alert(`${this.name}在工作`)
  }
}

var w=new Web('李四');
w.work();

//类外部访问公有属性
class Person{
  public name:string;  /*公有属性*/
  constructor(name:string){
    this.name=name;
  }
  run():string{
    return `${this.name}在运动`
  }
}
var  p=new Person('哈哈哈');
alert(p.name);
  1. protected:保护类型 在类里面、子类里面可以访问 ,在类外部没法访问
class Person{
  protected name:string;  /*公有属性*/
  constructor(name:string){
    this.name=name;
  }

  run():string{
    return `${this.name}在运动`
  }
}

var p=new Person('王五');
alert(p.run());

class Web extends Person{
  constructor(name:string){
    super(name);  /*初始化父类的构造函数*/
  }                  

  work(){
    alert(`${this.name}在工作`)
  }
}

var w=new Web('李四11');
w.work();
alert( w.run());

//类外外部没法访问保护类型的属性
class Person{
  protected name:string;  /*保护类型*/
  constructor(name:string){
    this.name=name;
  }

  run():string{
    return `${this.name}在运动`
  }
}

var  p=new Person('哈哈哈');
alert(p.name);  //编译报错
  1. private :私有 在类里面可以访问,子类、类外部都没法访问

    class Person{
    private name:string;  /*私有*/
    constructor(name:string){
     this.name=name;
    }
    
    run():string{
     return `${this.name}在运动`
    }
    }
    

class Web extends Person{
constructor(name:string){
super(name)
}
work(){
console.log(${this.name}在工作)
}
}

class Person{
private name:string; /私有/
constructor(name:string){
this.name=name;
}

run():string{
return ${this.name}在运动
}
}

var p=new Person(‘哈哈哈’);
alert(p.run()); //当前类是可以使用的


文章作者: Chaoqiang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Chaoqiang !
评论
 上一篇
TypeScript Basic Tutorial (6) TypeScript Basic Tutorial (6)
静态属性 静态方法: //ES5中的静态方法 静态属性 function Person(){ this.run1=function(){ } } Person.name='哈哈哈'; Person.run2=function(){
下一篇 
TypeScript Basic Tutorial (4) TypeScript Basic Tutorial (4)
es5里面的类最简单的类function Person(){ this.name='张三'; this.age=20; } var p=new Person(); alert(p.name); 构造函数和原型链里面增加方法func
  目录