java - 如何访问子类中的方法

标签 java methods arraylist subclass

我目前正在学习 Java,但我确实遇到了一些困难。所以我有一个类“Disk”,其子类为“CD”、“Game”和“DVD”。我有一个“数据库”类,它在数组列表中创建磁盘、游戏和 cd 的新实例。数组列表的初始化如下:

private ArrayList<Disk> disks = new ArrayList(); 

然后我将 Game 的实例添加到数组中:

disks.add(new Game(1999,"SuperGame!",900,"xbox","ea"));

我正在尝试使用以下代码访问 Game 子类中的方法“getConsole”:

Disk currentDisk = disks.get(3);
currentDisk.getConsole();

它说 getConsole 方法不存在。我可以看到问题是它仅访问 Disk 类的方法和字段,但我怎样才能使其能够访问它所定义的子类的方法。感谢您的宝贵时间:)

最佳答案

由于 getConsole() 仅在 Game 子类上可用,因此您需要告诉 Java 您知道您正在查看 Game >,并显式转换:

Disk currentDisk = disks.get(3);
if (currentDisk instanceof Game) {
    ((Game)currentDisk).getConsole();
}

这不是在 Java 中执行操作的好方法,因为您正在显式测试子类的类型。

关于java - 如何访问子类中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10673471/

相关文章:

java - 斯卡拉 : how to start an actor in array?

java - 深入浅出解释Java中的close()方法

java - 方法不必要地被调用?

java - 如何使用 joda time 确定数组列表中是否存在日期

android - 如何根据正值或负值更改自定义 ListView 中数组列表项的颜色

java - 将 opengl 纹理句柄从 Android Java 传递到 C++?

java - java中如何杀死多个进程?

java - 为什么我在这里总是得到预期的 .class ?常见问题都不是罪魁祸首

java - 排列发生器

java - EJB:看来我不明白关键点