【问题标题】:Instantiate parent but acces subclass attributes实例化父类但访问子类属性
【发布时间】:2017-03-26 11:53:47
【问题描述】:

我有一个父类和几个子类。在我的代码的某一时刻,我需要使用子类的属性,但我需要将其声明为父类。我该怎么做?

我这样实例化它:

Parent oObj = new SonN();

在某些时候我需要使用孩子的一个属性:

oObj.sonAttribute = x 

我这样做是因为我使用的是片段。在每个片段中,oObj 将是一个不同的子对象,我需要从主 Activity 访问该对象并使用 oParent 方法。

我的所有片段都继承自包含此对象的父片段:

public class FragmentParent extends Fragment {
public Parent oObj;}

【问题讨论】:

  • 除非您检查其实例类型并对其进行类型转换,否则您不能这样做。显然,您可以访问父级的属性。
  • 多态性仅适用于 java 中的方法。所以无法通过超类引用访问子类属性。

标签: java android android-fragments inheritance android-activity


【解决方案1】:

为父属性中的属性创建一个getter(访问器)方法,就像我们应该做的那样。根据需要在孩子身上覆盖它。仅通过访问器引用属性,几乎总是应该这样做。

【讨论】:

    猜你喜欢
    • 2021-11-07
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多