• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

TypeScript类中的访问类型和构造器

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
访问类型有 private, protected, public
class Person {
  name: string;
  public sayHi() {
    console.log(this.name); // 类内调用
  }
}

class Teacher extends Person{
  public sayBye() {
    this.name;
  }
}
const person = new Person();
person.name = 'zina';
console.log(person.name); // 类外调用
person.sayHi(); // 类外调用

这里可以对属性进行赋值和取值,是因为类中属性方法默认是 public

* public: 允许我在类对内外被调用
* private: 允许我在类内被使用
* protected: 允许在类内及继承的子类中使用



class Person {
  public name: string;
  constructor(name: string){ // 调用的时候自动执行
    this.name = name;
  }
}
const person = new Person('zina');
console.log(person.name);
// 想给属性赋值的时候,比较传统的写法是先定义一个 name 属性
// 然后在构造器里面赋值,有没有更简单的方法,是有的



class Person1 {
  // 调用的时候自动执行
  constructor(public name: string){}
}
const person1 = new Person1('zina');
console.log(person.name);
// 在参数前加一个访问类型,加一个 public ,等同于定义一个 name 并赋值



class Person2 {
  constructor(public name: string){}
}
class Teacher extends Person2{
  /**
  * 子类定义了一个age,在创建的时候也传递了,还是会报错,因为继承了 Person2
  * @param age
  */
  // constructor(public age:number){}
  constructor(public age:number){
    super('zina'); // 如果子类有构造器,父类也有构造器,这个时候子类就一定要手动的调用下父类的构造器
  }
}
const teacher = new Teacher(28);
console.log(teacher.name, teacher.age)

 



总结:
1、访问类型:
* public: 允许我在类对内外被调用
* private: 允许我在类内被使用
* protected: 允许在类内及继承的子类中使用
2、
class Person1 {
  constructor(public name: string){} // 自动执行
}
// 等同于
class Person {
  public name: string;
  constructor(name: string){ // 自动执行
    this.name = name;
  }
}
3、super
如果子类有构造器,这个时候子类就一定要手动的调用下父类的构造器,super()

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap