这是我在学习 TS 面向对象时整理的核心知识点,加入了真正理解后的总结和工程经验,希望能帮到你。本编包含所有对象class的用法和定义,是对该板块的总结篇,如有疑问欢迎与驻波讨论学习。

🧭目录

✅一、Class 类的基本语法

✅二、constructor 构造器

✅三、this 指向规则

✅四、实例与对象创建

✅五、访问修饰符 public private protected

✅六、方法定义与调用

✅七、属性简化声明语法(工程最常用)

✅八、静态成员 static

✅九、继承 extends

✅十、super 用法解析

✅十一、方法重写 override

✅十二、instanceof 类型判断机制
  

✅一、Class 类的基本语法

📌概念定义
class 是一个对象模板。TypeScript 通过类来定义属性和行为,是 OOP 的最小组成单元。

✍️我的理解(通俗)
class 就像蓝图、说明书。你造房子不会每次都手工画草图,而是照着设计图反复建造。

✅语法模板

class 类名 {
  属性名: 类型
  方法名() {}
}

✅示例

class Person {
  name: string
  age: number

  sayHi() {
    console.log(`Hi,我是${this.name}`)
  }
}

📌总结
有了类,代码结构更清晰、更易复用。

✅二、constructor 构造器

📌概念定义
constructor 是创建实例时自动执行的初始化函数。

✍️我的理解
构造器就像“入职培训”。每个员工(实例)入职,都要被初始化:配电脑、发工号。

✅语法模板

constructor(参数: 类型) {
  this.属性 = 参数
}

✅示例

class Person {
  name: string
  age: number

  constructor(name: string, age: number) {
    this.name = name
    this.age = age
  }
}

📌建议
属性必须在 constructor 里初始化,否则可能报错。

✅三、this 指向规则

📌概念定义
this 指向当前实例对象,通常指调用方法的那个对象。

✍️我的理解
this 就是句子里的“我”,视角跟着说话的人变。

✅示例

p.sayHi() // this → p

✅箭头函数中的 this 更稳定

sayHi = () => {
  console.log(this.name)
}

📌工程建议
涉及回调时优先使用箭头函数,避免「this 丢失」问题。

✅四、实例与对象创建

📌概念定义
使用 new 执行 constructor 创建实例对象。

✅语法模板

const 对象 = new 类名(参数)

✅示例

const p = new Person("Tom", 18)
console.log(p.name)

📌理解
“类”是设计,“实例”是具体物体。

✅五、访问修饰符 public private protected

📌概念定义
控制属性访问范围,实现封装。

修饰符           类内部    子类    实例外部
public(默认)    ✅      ✅         ✅
protected             ✅      ✅         ❌
private                 ✅      ❌         ❌

✍️个人理解
权限控制就像公司的门禁。
    •    private:仅本人可进(工位)
    •    protected:部门内部开放(办公室)
    •    public:大厅,人人可进

✅示例(private 禁止外部访问)

class Bank {
  private money: number = 1000
}

const b = new Bank()
b.money // ❌

✅示例(protected 支持继承访问)

class Person {
  protected age = 20
}

class Student extends Person {
  showAge() {
    console.log(this.age) // ✅
  }
}

📌工程建议
敏感数据必须 private,可扩展信息用 protected。

✅六、方法定义与调用

📌概念定义
类中的函数称为方法,用于组织行为。

✍️我的理解
属性是“名词”,方法是“动词”。

✅语法模板

方法名(参数: 类型): 返回类型 {
  逻辑
}


class Person {
  speak(msg: string): void {
    console.log(msg)
  }
}

📌建议
方法命名使用动词短语,表达清晰行为。

✅七、属性简化声明语法(工程最常用)

📌概念定义
构造函数参数前加修饰符,会自动声明并赋值,减少重复代码。

✍️我的理解
一行顶原来三行。TS 工程师最爱的特性之一。

✅对比

传统冗长写法:

class Person {
  name: string
  age: number
  constructor(name: string, age: number) {
    this.name = name
    this.age = age
  }
}

简化写法 ✅:

class Person {
  constructor(public name: string, public age: number) {}
}

📌工程建议
团队统一使用简化写法,提高效率与可读性。

✅八、静态成员 static

📌概念定义
static 用于定义类级别的属性或方法,不依赖实例,可直接通过类名访问。

✍️我的理解
静态成员就像公司的公告板,和某个员工无关,所有人都能看到和用。

✅语法模板

class 类名 {
  static 属性名: 类型
  static 方法名() {}
}

// 调用
类名.属性名
类名.方法名()

✅示例

class MathUtil {
  static PI: number = 3.14

  static calcCircleArea(radius: number) {
    return MathUtil.PI * radius * radius
  }
}

console.log(MathUtil.PI) // 3.14
console.log(MathUtil.calcCircleArea(2)) // 12.56

✅错误示例

const m = new MathUtil()
console.log(m.PI) // ❌ 静态属性不能通过实例访问

📌工程建议
静态成员适合工具方法、常量、计数器等全局共享逻辑。

✅九、继承 extends

📌概念定义
extends 用于实现类与类之间的继承,使子类复用父类属性和方法。

✍️我的理解
继承就像职场中的部门继承,部门员工可以继承总部的制度和资源。

✅语法模板

class 父类 {}
class 子类 extends 父类 {}

✅示例

class Animal {
  eat() { console.log("吃东西") }
}

class Dog extends Animal {
  bark() { console.log("汪汪") }
}

const d = new Dog()
d.eat()  // ✅ 继承父类方法
d.bark() // ✅ 自己的方法

📌工程建议
复用公共逻辑,减少重复代码,提高可维护性。

✅十、super 用法解析

📌概念定义
super 代表父类,用于调用父类的构造函数或方法。

✍️我的理解
super 就是“上级”,帮你调用总部的规则或方法。

✅语法模板

class 父类 {
  constructor(参数) {}
  方法() {}
}

class 子类 extends 父类 {
  constructor(参数) {
    super(参数) // 调用父类构造函数
  }

  方法() {
    super.方法() // 调用父类方法
  }
}

✅示例

class Animal {
  constructor(public name: string) {}
  move() { console.log(`${this.name} 在移动`) }
}

class Dog extends Animal {
  constructor(name: string) {
    super(name)
  }

  move() {
    super.move()  // 调用父类方法
    console.log(`${this.name} 跑得快`)
  }
}

const d = new Dog("旺财")
d.move()
// 旺财 在移动
// 旺财 跑得快

✅错误示例

class Dog extends Animal {
  constructor(name: string) {
    // ❌ 未调用 super,TS 会报错
    this.name = name
  }
}

📌工程建议
子类 constructor 必须先调用 super,再访问 this。

✅十一、方法重写 override

📌概念定义
子类可重写父类方法,用 override 显式标注,保证类型安全。

✍️我的理解
方法重写就像员工对上级规定的优化,可以自定义行为但仍保持兼容。

✅语法模板

class 父类 {
  方法() {}
}

class 子类 extends 父类 {
  override 方法() {}
}

✅示例

class Animal {
  move() { console.log("动物移动") }
}

class Dog extends Animal {
  override move() { console.log("狗跑") }
}

const d = new Dog()
d.move() // 狗跑

✅错误示例

class Dog extends Animal {
  move() { console.log("狗跑") } // ❌ 未加 override 可能漏掉类型检查
}

📌工程建议
TS 4.3+ 建议使用 override,提高可维护性与安全性。

✅十二、instanceof 类型判断机制

📌概念定义
instanceof 用于判断对象是否为某个类的实例,支持继承链判断。

✍️我的理解
instanceof 就像「身份证检查」,验证对象身份和家族血统。

✅语法模板

对象 instanceof 类名

✅示例

📌工程建议
动态类型判断、回调或多态处理中常用。

✅十三、总结
    1.    类是 OOP 基本单元,封装属性与方法。
    2.    构造器 constructor 初始化实例。
    3.    this 指向当前实例,箭头函数可稳定绑定。
    4.    实例化 new 类名()。
    5.    public / private / protected 控制访问权限。
    6.    方法组织行为,动词命名清晰。
    7.    属性简化声明提高效率。
    8.    static 静态成员类级别共享。
    9.    extends 实现继承,复用父类逻辑。
    10.    super 调用父类构造或方法。
    11.    override 显式方法重写,保证类型安全。
    12.    instanceof 检查对象类型及继承链。

📌工程经验总结
    •    封装 + 继承 + 多态(方法重写 + instanceof)构成 TS OOP 核心。
    •    static 和简化属性声明提升效率。
    •    访问修饰符控制安全性,super 保证子类初始化安全。
    •    方法命名与箭头函数配合,可避免 this 问题。
    •    面向对象让代码更清晰、复用更高、扩展性强。

🎯掌握以上知识点,你就可以在 ArkUI 项目中写出高效、可维护、可扩展的面向对象代码。

💡掌握了 Class的自定义技巧,也就掌握了 ArkUI 的一半交互核心!

恭喜您,迈出了鸿蒙应用开发坚实的一步!🎉

🤔 接下来,我将继续为大家更新鸿蒙开发的相关知识点,如果喜欢,记得关注驻波。

✅ 如果你觉得这篇 ArkUI 学习笔记对你有帮助,记得 点赞 + 收藏,关注我获取更多鸿蒙开发干货!📝 有任何问题欢迎在评论区留言,我们一起交流学习!

过往的博客欢迎各位大佬捧场。

从 0 到 1:用 ArkUI 写出你的第一个鸿蒙 App 界面 _从0到1:用arkui写出你的第一个鸿蒙app界面-CSDN博客

鸿蒙ArkUI布局与样式进阶(二)—— SVG 设计图案、Padding、Margin、Border、圆角与背景实战_鸿蒙将resource资源svg宽高-CSDN博客

鸿蒙ArkUI布局与样式进阶(三)——线性布局(Row 与 Column)深度解析与工程实践-CSDN博客

鸿蒙ArkUI布局与样式进阶(四)——从 Column 到 Grid,一篇搞懂常用布局(含实战案例与逐行注释)_arkui gridrow按钮-CSDN博客

鸿蒙ArkUI布局与样式进阶(五)——从状态到界面:ArkUI 的响应式编程核心-CSDN博客

鸿蒙ArkUI布局与样式进阶(六)——ArkUI 支持的各种运算符和语法基础与数组操作-CSDN博客

鸿蒙ArkUI布局与样式进阶(七)——鸿蒙 ArkUI 开发中的条件判断与循环语句全解析(实战 + 思维延伸)-CSDN博客

对harmonyos感兴趣的培养记得关注驻波

那年窗外下的雪.-CSDN博客

注:本系列博客文章前八章已与harmonyos生态签订授权认证,请勿侵权使用,如需请联系驻波

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐