在 ArkTS 里,对象、interface 和 class 是核心概念,下面会详细介绍它们的语法、联系和区别。

语法介绍

一、对象

对象是一组键值对的集合,键为字符串,值可以是任意类型。可以使用对象字面量来创建对象。

// 创建一个简单的对象
let person = {
    name: "Alice",
    age: 25,
    // 对象中的方法
    sayHello: function() {
        console.log(`Hello, my name is ${this.name}`);
    }
};
// 访问对象属性
console.log(person.name); 
// 调用对象方法
person.sayHello();

在上述代码中,person 是一个对象,它有 name、age 属性和 sayHello 方法。

二、接口(Interface)

interface 用于定义对象的类型结构,规定对象应包含哪些属性和方法,但不包含具体实现。

// 定义一个接口
interface Person {
    name: string;
    age: number;
    sayHello(): void;
}

// 创建一个符合 Person 接口的对象
let alice: Person = {
    name: "Alice",
    age: 25,
    sayHello: function() {
        console.log(`Hello, my name is ${this.name}`);
    }
};

alice.sayHello(); 

此代码中,Person 接口定义了对象的结构,alice 对象遵循该接口的定义。

三、类(Class)

class 是对象的模板,可封装数据和操作数据的方法。通过 class 能创建多个具有相同结构和行为的对象实例。

// 定义一个类
class Person {
    // 类的属性
    name: string;
    age: number;

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

    // 类的方法
    sayHello() {
        console.log(`Hello, my name is ${this.name}`);
    }
}

// 创建类的实例
let bob = new Person("Bob", 30);
bob.sayHello(); 

三者的联系

  1. 接口和类:类可以实现接口,这意味着类需要遵循接口定义的结构。通过实现接口,类可以确保自身具有接口所规定的属性和方法。
interface Animal {
    name: string;
    eat(): void;
}

class Dog implements Animal {
    name: string;
    constructor(name: string) {
        this.name = name;
    }
    eat() {
        console.log(`${this.name} is eating.`);
    }
}

let dog = new Dog("Buddy");
dog.eat(); 

这里 Dog 类实现了 Animal 接口,必须提供 name 属性和 eat 方法。

  1. 对象和类:类是对象的模板,通过类的构造函数可以创建对象实例。对象是类的具体表现,具有类所定义的属性和方法。

三者的区别

  • 抽象与具体:

    • 接口:是抽象的类型定义,只定义结构,不包含具体实现。
    • 类:可以看作是半抽象半具体的,它定义了对象的结构和行为,但可以包含具体的实现代码。
    • 对象:是具体的实体,包含实际的数据和功能,可以直接使用和操作。
  • 功能和用途:

    • 接口:主要用于类型检查和约束,确保对象具有特定的属性和方法,提高代码的可靠性和可维护性。
    • 类:用于创建对象实例,支持面向对象编程的封装、继承和多态等特性,可实现代码的复用和扩展。
    • 对象:用于存储和操作数据,是程序中实际使用的数据单元。
  • 实例化:

    • 接口:不能被实例化,它只是一种类型规范。
    • 类:可以通过 new 关键字实例化,创建具体的对象。
    • 对象:是已经实例化的实体,可以直接使用。

通过合理运用对象、interface 和 class,可以构建出结构清晰、易于维护的 ArkTS 程序。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐