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()
  • 相关阅读:
    【百度地图API】让用户选择起点和终点的驾车导航
    JS解决通过按钮切换图片的问题
    JavaScript (JS)基础:DOM 浅析 (含数组Array、字符串String基本方法解析)
    JavaScript (JS)基础:ECMAScript 浅析 (含Math基本方法解析)
    感谢Sylvia的技术支持
    0904 存储过程、触发器、事务、视图、生成脚本
    0903 连接查询
    0901 子查询
    0831 模糊查询,排序查询,聚合函数,时间日期函数,数学函数,字符串函数
    0829 数据库的增删改查
  • 原文地址:https://www.cnblogs.com/wzndkj/p/13035117.html
Copyright © 2011-2022 走看看