有没有HarmonyOS鸿蒙Next工程师大佬路过,复习泛型继承的类没搞明白
有没有HarmonyOS鸿蒙Next工程师大佬路过,复习泛型继承的类没搞明白

这个是我在CodeGenie中询问得来的代码,但我并没有看的太懂,求大佬帮帮忙
// 基础类定义
class Base {
id: number = 0
}
// 泛型约束接口
interface DataConstraint {
value: string
}
// 泛型类继承示例
class GenericClass<T extends DataConstraint> extends Base {
data: T
constructor(data: T) {
super()
this.data = data
}
display(): void {
console.log(`ID:${this.id}, Data:${this.data.value}`)
}
}
// 使用示例
class ValidData implements DataConstraint {
value: string = "Default"
}
const instance = new GenericClass(new ValidData())
instance.display() // 输出: ID:0, Data:Default
更多关于有没有HarmonyOS鸿蒙Next工程师大佬路过,复习泛型继承的类没搞明白的实战教程也可以访问 https://www.itying.com/category-93-b0.html
**有劳补全问题描述,**让用户更清晰了解您的问题。
就所给的信息来看,ValidData是声明自接口DataConstraint的实例类,GenericClass是继承自Base基类的类,所以GenericClass的属性Id会继承自Base类,Id的值和在初始化时传入的值有关;new一个ValidData数据,并没有传入新的数据去初始化ValidData的属性data,data保持默认,这也就为什么最后输出Data是Default。
更多关于有没有HarmonyOS鸿蒙Next工程师大佬路过,复习泛型继承的类没搞明白的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
泛型继承的类使用涉及类型约束和继承关系结合
类与接口定义:
class Base {
id: number = 0 // 所有子类将继承该字段
}
interface DataConstraint {
value: string // 定义必须包含value字符串字段的接口
Base类提供基础属性id;DataConstraint接口强制实现类必须包含value字段
泛型类实现继承与约束:
class GenericClass<T extends DataConstraint> extends Base {
data: T // 泛型字段必须符合接口约束
constructor(data: T) {
super() // 调用父类构造函数初始化id
this.data = data
}
display(): void {
console.log(`ID:${this.id}, Data:${this.data.value}`)
}
}
<T extends DataConstraint>:泛型参数必须实现指定接口;extends Base:继承父类的id字段和方法;构造函数通过super()初始化父类属性
具体实现与调用
class ValidData implements DataConstraint {
value: string = "Default" // 符合接口约束
}
const instance = new GenericClass(new ValidData())
instance.display() // 输出父类id + 泛型对象value
这样是不是就清楚了?
// 使用示例
class ValidData implements DataConstraint {
value: string = "Default"
}
class ValidData2 implements DataConstraint {
value: string = "使用示例2"
}
class ValidData3 implements DataConstraint {
value: string = "使用示例3"
}
const instance = new GenericClass(new ValidData())
instance.display() // 输出: ID:0, Data:Default
const instance2 = new GenericClass(new ValidData2())
instance2.display() // 输出: ID:0, Data:使用示例2
const instance3 = new GenericClass(new ValidData3())
instance3.display() // 输出: ID:0, Data:使用示例3
在HarmonyOS Next中,泛型继承通过类型参数化实现代码复用与类型安全。子类继承父类时,可指定具体类型参数或传递泛型参数。例如,class Child<T> extends Parent<T> 允许子类使用与父类相同的泛型类型。若需约束类型,可使用extends关键字,如<T extends SomeType>。这确保了类型兼容性,同时保持了代码的灵活性。


