我想为项目中的所有片段提供基本功能。
父片段( FragmentP )本身扩展了android {{1}}类。在这里,我将为所有扩展它的片段提供一个通用功能。
现在我的问题是:
答案 0 :(得分:1)
不,它与实例化无关。继承的概念是你扩展预先存在的类的功能,在这种情况下,它是FragmentP
扩展方法,字段等。
它仍然是Fragment
,具有来自android的通常生命周期。
答案 1 :(得分:1)
当你扩展课程时,你唯一能做的就是专攻父母的功能。
现在,如果在子构造函数中调用super();
,它就不会实例化父对象。相反,它在运行子类构造函数中的代码之前运行父构造函数。
当您的子类需要在实例化时执行相同的行为时,通常会使用此方法。
编辑:
假设您有一个超级班Vehicle
和两个孩子Car
和Quad
。
这两种车辆都有4个车轮。因此,您的超级构造函数可以将wheel
字段初始化为 4 的值。
但两个孩子都有分歧:
例如,当Car
没有时,Quad
有窗口。
因此,您的Car
构造函数应该初始化一个窗口字段,并且您的Quad
构造函数不应该。
答案 2 :(得分:1)
1)实例化一个类时,没有实例化父类,尽管你必须调用父类的构造函数:
public childClass(){
super();
}
但只有一个实例存在,即childClass,内存中不会出现parentClass的实例。因此,对于任何类,生命周期都是相同的,继承是静态过程,而不是动态过程。这意味着它发生在编译期间,而不是在执行期间。
2)FragmentP仅在您明确决定这样做时实例化,具体取决于您选择的实例化策略(工厂,构造函数,构建器等)。当没有对实例的剩余实时引用时,它被销毁(实际上由垃圾收集器收集)。