zoukankan      html  css  js  c++  java
  • TypeScript 类中的访问类型和构造器

    访问类型有 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()
  • 相关阅读:
    数字和字母交替打印
    日期和字符串的转化
    redis简介
    管理MySQL的命令
    创建mysql数据表成功
    微信账号 echo_server 的实现
    html5 画个圈
    php练习1
    人生十大点
    养生“六伤”、“十二莫”、“十二少”
  • 原文地址:https://www.cnblogs.com/wzndkj/p/13035117.html
Copyright © 2011-2022 走看看