我有一些子类和一个基础。
Base是movie
,我想在Fiction
方法中调用该方法,该方法是子类。
该方法将从名为(management.java)的其他方法调用。
小说有自己的字段叫typeOfmovie
和getter和setter方法。
我想要做的是,我想称之为getter或setter方法。
但即使我创造了如下:
Movie m = new Fiction();
我不能从那里调用getter或setter方法。
唯一的方法是我应该在movie
类中创建抽象方法吗?
我可以,但随着字段数量的增加,我认为基类可能会变得混乱。
这是我能做的唯一方法吗?
此外,该字段是包私有(默认),但我仍然无法以这种方式访问 你能给我一个建议吗?
由于
答案 0 :(得分:2)
你的声明说m是类型为movie,所以它可以调用仅在Movie中声明的方法(如果你的子类中重写了任何基类方法,那么将执行重写的方法代码)。但是如果你想在子类中调用额外的方法。你必须像这样创建你的对象
小说f =新小说();
答案 1 :(得分:1)
您的两个选择是将方法放在Movie
上 - 这有你提到的缺点 - 或者将m
强制转换为Fiction
:
Fiction f = (Fiction) m;
f.typeOfMovie();
但是经常(并非总是),需要做那个向下转发表明你的代码没有以最面向对象的方式组织。如果没有上下文,那就很难知道。
答案 2 :(得分:0)
如果需要使用派生类的成员,则应将该字段声明为派生类的实例。