gpt4 book ai didi

Java继承...我认为。也许不会

转载 作者:行者123 更新时间:2023-12-01 19:07:46 25 4
gpt4 key购买 nike

我需要收集几个不同的类。在我看来,子类继承自更通用的父类(super class)。所以我有类 SuperClass,它当前有一个 Object 类型的成员变量 o,它将采用子类 SubClassA 和类 SubClassB 之一的单个实例。 SubClassA 和 SubClassB 有一些共同点,例如需要创建数据库表来保存自身的描述。因此,每个子类都需要有一个方法CreateDatabaseTables()。目前我有一个 SuperClass 实例的集合,每个实例都包含一个 Object o,它可以是我在编译时不知道的几个类之一。也许这不是最好的方法......

我的问题是,当我迭代集合时,我是否能够调用类似的东西

for (int i = 0; i < superClassArray.size; i++)
{
superClassInstance[i].o.CreateDatabaseTables();
}

无需将 Object o 转换为子类之一?

还是我把整件事都搞砸了,而我只是做错了?这个概念是继承还是其他什么?我不认为这是继承,因为我不打算在父类(super class)中编写 CreateDatabaseTables() 方法。每个类都必须有自己的方法。

最佳答案

您没有使用继承,而是使用组合。

您不需要基类中的成员:

abstract class SuperClass
{
public abstract void CreateDatabaseTables();
}

class SubClassA extends SuperClass
{
public void CreateDatabaseTables() { /*do whatever*/ }
}
class SubClassB extends SuperClass
{
public void CreateDatabaseTables() { /*do whatever else*/ }
}

只需调用基类上的重写方法即可:

// Collection<SuperClass> superClassInstance;
// you can populate superClassInstance with objects of type
// SubClassA or SubClassB
for (int i = 0; i < superClassInstance.length; i++)
{
superClassInstance[i].CreateDatabaseTables();
}

关于Java继承...我认为。也许不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9416552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com