鸿蒙开发03-对象、interface、class
·
在 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();
三者的联系
- 接口和类:类可以实现接口,这意味着类需要遵循接口定义的结构。通过实现接口,类可以确保自身具有接口所规定的属性和方法。
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 方法。
- 对象和类:类是对象的模板,通过类的构造函数可以创建对象实例。对象是类的具体表现,具有类所定义的属性和方法。
三者的区别
-
抽象与具体:
- 接口:是抽象的类型定义,只定义结构,不包含具体实现。
- 类:可以看作是半抽象半具体的,它定义了对象的结构和行为,但可以包含具体的实现代码。
- 对象:是具体的实体,包含实际的数据和功能,可以直接使用和操作。
-
功能和用途:
- 接口:主要用于类型检查和约束,确保对象具有特定的属性和方法,提高代码的可靠性和可维护性。
- 类:用于创建对象实例,支持面向对象编程的封装、继承和多态等特性,可实现代码的复用和扩展。
- 对象:用于存储和操作数据,是程序中实际使用的数据单元。
-
实例化:
- 接口:不能被实例化,它只是一种类型规范。
- 类:可以通过 new 关键字实例化,创建具体的对象。
- 对象:是已经实例化的实体,可以直接使用。
通过合理运用对象、interface 和 class,可以构建出结构清晰、易于维护的 ArkTS 程序。
更多推荐

所有评论(0)