美文网首页
TS-11 面向对象-class 下

TS-11 面向对象-class 下

作者: RickyWu585 | 来源:发表于2023-03-16 07:48 被阅读0次
  • 成员可见性:
  1. public:类外可见(默认就是public),类内及子类也都可访问
  2. private:仅类内可见,this.xxx,但类型擦除后,如果人家用js引用,还是可以访问,因此ts提供了#var作为真正的私有属性
  3. protected:类内及子类可见,类似于整个家族类可见
class Person {
  friend?: Person // 默认是public
  protected gender = 'male'
  private height = 170
  public weight = 70
  #age = 20 // 真正的私有属性(private)
  constructor(public name:string,friend?:Person){
    this.friend = friend
    this.name = name
    this.#age = 20
  }
  sayHi(){
    console.log(this.name)
  }
  getHeight(){
    console.log(this.height)
    console.log(this.name)
    console.log(this.gender)
  }
}

const p = new Person('frank')
p.sayHi()
p.getHeight()

class User extends Person{
  declare friend?: User
  constructor(name:string,friend?:User){
    super(name,friend)
  }
  test(){
    console.log(`---${this.gender}---`)
    console.log(`---${this.weight}---`)
    // 不能访问 this.height
  }
}

const u1 = new User('mike')
u1.test()
u1.weight
// 不能访问 u1.gender 以及 u1.height 
  • static:静态属性,就是类自身的属性,类似于原型中的共有属性的概念
class Student {
  static grade = 7  // 可修改
  static readonly tag = '' // 不能修改
}

Student.grade = 8
  • 注意点:静态属性不能声明name,因为class在js中就是函数class A {}; typeof A === 'function',而所有的函数都有name属性
  • 类和泛型
class Hash<K,V> extends Map<K,V> {
  destroy(){
    this.clear() // 继承自Map类的方法
  }
}
  • 匿名类
  • abstract:抽象类,可以不实现一部分属性。不能创建实例
  • 把类当做参数:
class Person {
  constructor(public name:string){}
}

function f(X:typeof Person){
  const p = new X('frank')
  console.log(p.name)
}

f(Person)

// 这不是箭头函数,箭头函数是不能加 new 的
function f2(X: new (name:string) => Person){
  const p = new X('ricky')
  console.log(p.name)
}

f2(Person)

相关文章

  • 【python】面向对象

    面向对象编程面向对象的设计思想是抽象出Class,根据Class(类)创建Instance(实例)。面向对象的程序...

  • Python学习之路(面向对象)

    面向对象 面向对象的设计思想是抽象出Class,根据Class(类)创建Instance(实例)。面向对象的抽象程...

  • Pytorch搭建网络

    面向对象编程 类 面向对象编程——类class和对象object class是一种类型(Type),object是...

  • ES6面向对象

    1、ES6面向对象: class(类) 构造函数 对象 实例对象 ES5面向对象是模拟面向对象。 2、继...

  • 23

    编程方法大致有三种: ——面向对象 ——面向过程 ——函数式编程 面向对象——类——class 面向过程——过程—...

  • JavaScript之面向对象编程

    五、面向对象编程 目录:面向对象原型继承、面向对象class继承(ES6引入的) 1.面向对象原型继承 类:模板 ...

  • typescript 中的class

    class 用来创建对象。TS中的class与面向对象语言(java,c++)中的class就比较相似了。 内容:...

  • 面向对象编程

    面向对象编程 概念:oop,Python内一切结为对象 类Class定义class ClassName(objec...

  • 深入理解iOS开发中的isa指针

    深入代码理解instance、class object、metaclass 面向对象编程中,最重要的概念就是类,下...

  • (转)深入理解iOS开发中的isa指针

    深入代码理解instance、class object、metaclass 面向对象编程中,最重要的概念就是类,下...

网友评论

      本文标题:TS-11 面向对象-class 下

      本文链接:https://www.haomeiwen.com/subject/oklvkdtx.html