用鸿蒙系统定义一个接口person具有name、age、id_num属性以及方法print。创建两个类(学生、老师)分别实现上述接口
时间: 2024-10-19 22:10:54 浏览: 53
在HarmonyOS(鸿蒙系统)环境中,你可以使用其组件化和契约(Contract)的设计理念来定义接口和类。首先,我们定义一个名为`Person`的接口,包含属性和方法:
```harmonyos
// person.contract
interface PersonContract {
string getName();
int getAge();
string getIdNum();
void print();
}
```
接下来,我们创建两个实现这个接口的类,分别是`Student`和`Teacher`:
```harmonyos
// student.component
import "person.contract";
@Component
class Student: PersonContract {
var name: string;
var age: int;
var idNum: string;
constructor(name: string, age: int, idNum: string) {
this.name = name;
this.age = age;
this.idNum = idNum;
}
override fun getName(): string {
return name;
}
override fun getAge(): int {
return age;
}
override fun getIdNum(): string {
return idNum;
}
override fun print() {
println("Student: Name - $name, Age - $age, ID - $idNum");
}
}
// teacher.component
import "person.contract";
@Component
class Teacher: PersonContract {
var name: string;
var age: int;
var subject: string;
constructor(name: string, age: int, subject: string) {
this.name = name;
this.age = age;
this.subject = subject;
}
override fun getName(): string {
return name;
}
override fun getAge(): int {
return age;
}
override fun getIdNum(): string {
// 假设教师没有单独的ID,可以返回其他信息或者抛异常
throw UnsupportedOperationException("Teachers do not have an ID_num.");
}
override fun print() {
println("Teacher: Name - $name, Age - $age, Subject - $subject");
}
}
```
阅读全文
相关推荐


















