如何在java中调用子类中的方法?

时间:2012-01-24 01:37:26

标签: java

我有一些子类和一个基础。 Base是movie,我想在Fiction方法中调用该方法,该方法是子类。 该方法将从名为(management.java)的其他方法调用。 小说有自己的字段叫typeOfmovie和getter和setter方法。 我想要做的是,我想称之为getter或setter方法。 但即使我创造了如下:

Movie m = new Fiction();

我不能从那里调用getter或setter方法。 唯一的方法是我应该在movie类中创建抽象方法吗? 我可以,但随着字段数量的增加,我认为基类可能会变得混乱。

这是我能做的唯一方法吗?

此外,该字段是包私有(默认),但我仍然无法以这种方式访问 你能给我一个建议吗?

由于

3 个答案:

答案 0 :(得分:2)

你的声明说m是类型为movie,所以它可以调用仅在Movie中声明的方法(如果你的子类中重写了任何基类方法,那么将执行重写的方法代码)。但是如果你想在子类中调用额外的方法。你必须像这样创建你的对象

  

小说f =新小说();

答案 1 :(得分:1)

您的两个选择是将方法放在Movie上 - 这有你提到的缺点 - 或者将m强制转换为Fiction

Fiction f = (Fiction) m;
f.typeOfMovie();

但是经常(并非总是),需要做那个向下转发表明你的代码没有以最面向对象的方式组织。如果没有上下文,那就很难知道。

答案 2 :(得分:0)

如果需要使用派生类的成员,则应将该字段声明为派生类的实例。