B类延伸A类,但A类具有B类属性

时间:2016-01-22 03:40:59

标签: java android inheritance parcelable

所以我知道这很令人困惑,但为什么会这样呢?如果我有

public class A implements Parcelable{
  private B propB;
}

public class B extends A implements Parcelable{
  private int stuff;
}

所以如果我创造了一个

A objectA = new A(); 

不会有这样的无限循环: objectA.propB.propB.propB?

主要问题是我想在android中将类B的实例作为一个包传递,但这不起作用,没有错误,只是数据没有通过。除了那个似乎是循环依赖的属性之外,所有属性和数据都会被传递。

有什么理由说这是好习惯吗?或者这不是一个好主意?

2 个答案:

答案 0 :(得分:0)

在任何情况下都不会发生错误,因为B对象只有A的私有字段,而不是初始化。 但是,如果您创建一个新的B实例,则只创建一个新对象A()。

如果你想使用
    objectA.propB.propB.propB .......
你可以得到NullPointException。

答案 1 :(得分:0)

数据未被传递的原因是因为包裹。我没有在子类B上调用super(in)。所以尽管没有错误,但没有任何数据通过。