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()
  • 相关阅读:
    POJ 1300 Open Door
    POJ 2230 Watchcow
    codevs 1028 花店橱窗布置
    codevs 1021 玛丽卡
    codevs 1519 过路费
    codevs 3287 货车运输
    codevs 3305 水果姐逛水果街二
    codevs 1036 商务旅行
    codevs 4605 LCA
    POJ 1330 Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/wzndkj/p/13035117.html
Copyright © 2011-2022 走看看