类中的访问类型(private、protected、public)和构造器(constructor)

private protected public 访问类型

private 允许在类内被使用

案例:首先声明一个类叫做Person 有name属性和sayHi方法

class Person {
   private name :String;
    public sayHi(){
        //当我们定义的name是private类型的时候,在类内可以被调用
        console.log(this.name)
    }
}
//定义之后需要引用执行
const person = new Person();
person.sayHi()

protected 允许在类内及继承的子类中被使用

还是上面的代码

class Person {
   private name :String;
    public sayHi(){
        //当我们定义的name是private类型的时候,在类内可以被调用
        console.log(this.name)
    }
}
//定义之后需要引用执行
class Teacher extends Person{
    public sayB(){
        console.log(this.name)
    }
}
Teacher.sayHi()

public 允许在类内外被调用

class Person {
   public name :String;
    public sayHi(){
        //当我们定义的name是private类型的时候,在类内可以被调用
        console.log(this.name)
    }
}
const person = new Person();
person.name = "你好"
console.log(person.name)
person.sayHi()

//constructor 自动执行函数
class Person{
    public name:String;
    constructor(name:String))(
        this.name = name
    )
}
const person = new Person('你好')
console.log(person.name)

以上过于复杂 还有更简单的方法

class Person{
    //public name:String;
    constructor(public name:String)){
     //this.name = name
    }
}
const person = new Person('你好')
console.log(person.name)

再来说下constructor的一些应用:比如说在一个类中子类可以继承父类

class Person{
    constructor(public name:String)){}
}
const Teacher extends Person{
    constructor(public age:number){}
}
//这个时候你会发现在子类中的构造器会报错  那咋不报错那
 //首先需要调用一下父类本身的构造器的同时还需要传入父类的参数
const Teacher extends Person{
    constructor(public age:number){
        super('dell')
    }
} 
const teacher = new Teacher(29)
console.log(teacher)

注意:只要是子类中需要构造器必须使用super调用下父类

你可能感兴趣的:(类中的访问类型(private、protected、public)和构造器(constructor))