ts里的三种修饰符

1、public:公有,在类里面、子类、类外面都可以访问
2、protected:保护类型,在雷里面、子类里面可以访问,在类外部不能访问
3、private:私有,在类里面可以访问,子类、类外边不能访问
属性如果不加修饰符默认是公有(public)
class Person{
     name:string //公有属性
    constructor(name:string){
          this.name=name
     }
    run():string{
          return `${this.name}在运动`
     }
}
class  Web extends Person{
    constructor(name:string){
          super(name);
     }
    run():string{
          return `${this.name}在运动-子类`
     }
     work(){
        alert(`${this.name}在工作`)
     }
}
var w = new Web('李四');
w.work()
//公有属性外部获取
var p = new Person('哈哈哈')
alert(p.name)

//-------------ts静态类 静态方法
class  Per{
    public  name:string;
    public age:number=20;
    //静态属性
    static sex="男";
    constructor(name:string){
          this.name=name;
     }
    run(){
          alert(`${this.name}在跑步`)
     }
    work(){
          alert(`${this.name}在工作`)
     }
    static print(){
          alert('print方法'+this.age)//静态方法,里面没法直接调用类里面的属性
          alert('print方法'+Per.sex)  alert('print方法'+Per.sex)//这个可以
     }
}
Per.print();
alert(Per.sex);

//-------------ts中的抽象类:它是提供其他类继承的基类,不能直接被实例化
用abstract关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现
abstract抽象方法只能放在抽象类里
抽象类和抽象方法用来定义标准。例:animal这个类要求它的子类必须包含eat方法
abstract class Animal{
    public name:string;
    constructor(name:string){
          this.name=name;
     }
    abstract eat():any;//抽象方法中不包含具体的实现
    run(){
          console.log("其他方法可以不实现")
     }
}
var a = new Animal()//错误的写法
class Cat extends Animal{
    //抽象类的子类必须实现抽象类里的抽象方法
    constructor(name:any){
          super(name)
     }
    run(){}
    eat(){
          console.log(this.name+'老鼠')
     }
}
var c = new Cat('小花猫')
c.eat();

  

posted @ 2022-06-23 18:12  韩Jeor  阅读(919)  评论(0编辑  收藏  举报