Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第3章:面向对象编程

第3章:面向对象编程

类与对象

3.1.1 类的基本概念

在ArkTS中,**类(Class)**是面向对象编程的核心概念,用于描述具有相同属性和行为的对象集合。一个类可以包含:

  • 属性(成员变量):描述对象的状态
  • 方法(成员函数):定义对象的行为
  • 构造函数:用于初始化对象
// 定义一个Person类
class Person {
  // 成员变量
  name: string
  age: number

  // 构造函数
  constructor(name: string, age: number) {
    this.name = name
    this.age = age
  }

  // 成员方法
  introduce(): void {
    console.log(`Hello, I'm ${this.name}, ${this.age} years old.`)
  }
}

3.1.2 对象的创建与使用

**对象(Object)**是类的实例化结果,通过new关键字创建:

// 创建Person对象
let person1 = new Person("Alice", 25)
let person2 = new Person("Bob", 30)

// 访问对象属性和方法
console.log(person1.name) // 输出: Alice
person2.introduce() // 输出: Hello, I'm Bob, 30 years old.

3.1.3 访问修饰符

ArkTS支持三种访问控制修饰符:

  • public(默认):公开访问
  • private:仅类内部可访问
  • protected:类内部及子类可访问
class BankAccount {
  private balance: number = 0
  
  public deposit(amount: number): void {
    if (amount > 0) {
      this.balance += amount
    }
  }
  
  public getBalance(): number {
    return this.balance
  }
}

3.1.4 静态成员

使用static关键字定义属于类本身的成员(而非实例成员):

class MathUtils {
  static PI: number = 3.14159
  
  static circleArea(radius: number): number {
    return this.PI * radius * radius
  }
}

// 直接通过类名访问
console.log(MathUtils.PI) // 3.14159
console.log(MathUtils.circleArea(5)) // 78.53975

3.1.5 最佳实践

  1. 单一职责原则:每个类应该只有一个职责
  2. 合理使用访问控制:优先使用private保护内部状态
  3. 避免过度使用静态成员:静态成员会破坏封装性
  4. 命名规范:类名使用PascalCase,方法名使用camelCase

3.1.6 常见问题

Q:ArkTS中类与TypeScript类有什么区别? A:ArkTS的类语法基本与TypeScript一致,但在UI组件类中会有额外的装饰器(如@Component)和生命周期方法。

Q:什么时候应该使用类而不是接口? A:当需要实现具体行为和维护状态时使用类,当只需要定义契约时使用接口(将在3.3章详细介绍)。

Last Updated:: 5/22/25, 5:00 PM