鸿蒙ArkUI布局与样式进阶(十三)——TypeScript 面向对象 全解析:class、继承、修饰符、static、super、instanceof 万字教程
本文全面总结了TypeScript面向对象编程的核心知识点,包含12个核心模块:从Class基本语法、构造器到访问修饰符,从方法定义到继承与重写,重点讲解了工程实践中的简化声明语法和静态成员用法。文章通过生活化类比(如"权限控制像公司门禁")帮助理解抽象概念,并强调工程建议:如使用override确保类型安全、箭头函数稳定this指向等。最后指出掌握这些内容对鸿蒙ArkUI开发
这是我在学习 TS 面向对象时整理的核心知识点,加入了真正理解后的总结和工程经验,希望能帮到你。本编包含所有对象class的用法和定义,是对该板块的总结篇,如有疑问欢迎与驻波讨论学习。
🧭目录
✅五、访问修饰符 public private protected
✅一、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感兴趣的培养记得关注驻波
注:本系列博客文章前八章已与harmonyos生态签订授权认证,请勿侵权使用,如需请联系驻波
更多推荐


所有评论(0)