gpt4 book ai didi

java - 属性的 OOP 继承

转载 作者:搜寻专家 更新时间:2023-11-01 02:47:46 24 4
gpt4 key购买 nike

在 OOP 中,我在具有特定属性的类中继承时遇到了一些问题。我仍然没有找到一个简单的解决方案,但也许我没有好的关键字。

好的,假设我有以下类(class):

public class Video{  
}

public class Movie extends Video{
}

public class TVSerie extends Video{
}

Movie 和 TVSerie 都应该有一个 Actor 列表属性。但是 TVSerie 和 Movie 的 Actor 可能略有不同,所以我创建了以下 Actor 类:

public class Actor{
String name;
String role;
}

public class MovieActor extends Actor{
double compensation;
}

public class TVSerieActor extends Actor{
boolean guestStar;
int numberOfEpisodes;
}

基本上我想要的只是访问 Video 实例中的 Actor 列表,但我真的不知道在哪里声明每个列表。现在,我已经为 TVSerie 和 Movie 添加了一个特定 Actor 列表,但这似乎不对,因为我必须检查我的 Video 实例的类型以获取特定 Actor 列表,而我只需要父 Actor .

感谢您的帮助。

最佳答案

此类问题可以通过使用有界类型参数的泛型来解决:

public class Video<A extends Actor> {
protected List<A> actors;

public List<A> getActors() { return actors; }
}

public class Movie extends Video<MovieActor> {}

public class TVSerie extends Video<TVSerieActor> {}

这样你就可以使用具体的列表MoveActor如果你知道 VideoMovie , 但您也可以使用与 List<Actor> 相同的列表如果您不知道(或不关心)哪种 Video,请列出一个实例实际上是。

关于java - 属性的 OOP 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18189740/

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