gpt4 book ai didi

java - 类和子类的处理方式是否相同?

转载 作者:行者123 更新时间:2023-12-02 07:59:38 26 4
gpt4 key购买 nike

我有一个名为 Image 的类和一个扩展它的名为 ImageSheet 的类。

ImageSheetImage 相同,只是它具有附加字段,例如图像页上的帧数。

我想要做的是拥有它,这样我就可以调用 drawImage(img, frame) 并使 img 成为 Image 或一个 ImageSheet 并使用相同的方法处理它们,唯一的区别是,如果它是一个 Image ,那么 frame 字段将被忽略,但当它是一个ImageSheetframe 字段被读取并用于绘制特定的帧。

我试图避免为 ImageImageSheet 使用单独的方法,因为我已经有 3 个不同的 drawImage()接受不同输入变量的方法,如果我为每个类执行一个方法,我将拥有 3 对方法,其中每对方法本质上完全相同。

我怎样才能实现我的想法?

最佳答案

由于 ImageSheet 扩展了 Image,您可以在 drawImage(img, frame) 方法上签名应为 drawImage(Image img, Fr​​ame frame)。要区分 ImageImageSheet 对象,请使用 instanceOf 运算符。示例:

public void drawImage(Image img, Frame frame) {
if(img instanceof ImageSheet) {
// handle ImageSheet
} else {
// handle all other Image instances
}
}

关于java - 类和子类的处理方式是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9107234/

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