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()
  • 相关阅读:
    订餐系统之微信点餐
    Alfred工具
    使用密码记录工具keepass来保存密码
    一步一步实战扩展 ASP.NET Route,实现小写 URL、个性化 URL
    提高性能,抛弃反射
    -串行化与反串行化
    JavaScript 命名空间
    .net SoapHeader验证
    [置顶] Android Sensor系统剖析(4.0)(下)
    VirtualBox虚拟机下Windows登录密码破解方法(阿里云推荐码:1WFZ0V,立享9折!)
  • 原文地址:https://www.cnblogs.com/wzndkj/p/13035117.html
Copyright © 2011-2022 走看看