在 Java 中,无论是 explicit 还是 implicit 方式,都要求在子类的构造方法中调用其父类的构造方法。如果父类无构造方法(其实是一个默认无参的构造方法),那么子类的构造方法中会自动进行调用;如果 父类有自己的构造方法(这时父类不会有默认无参的构造方法),那么在子类的构造方法中,必须要调用父类的某个构造方法,而且必须是在构造方法的第一个语句 中进行调用。
究其原因,想必是 Java 语言设计者,要求子类有责任保证它所继承的父类尽快进入到一个稳定、完整的状态中。试想,如果没有这个约束,那么子类的某个继承自父类的方法可能会使用到父类中的一些变量,而这些变量并没有进行初始化,从而产生一些难以预料的后果,因此构造子类的对象前,必须构造父类的对象,并将之隐含于子类对象之中,使用关键字super引用父类对象。
也因此,当一个类的构造方法是 private 时,它是不可被 extends 的,因为子类构造方法难以调用到这个父类的构造方法。
更多,请访问:Open your thoughts
转自:
http://blog.csdn.net/javafuns/article/details/1446825
转载者注:现在对此知识点的印象有点模糊,在学习Groovy时遇到类似的情况,在此记录之。
分享到:
相关推荐
本篇文章介绍了,Java中子类调用父类构造方法的问题分析。需要的朋友参考下
以下是一个示例,展示了如何在子类中正确调用父类构造器: ```java class Employee { public Employee(int id) { System.out.println("Employee constructor called with ID: " + id); } } class Teacher ...
通过以上讨论,我们可以看到,Java中子类对象赋值给父类对象是一种强大且灵活的设计模式,它允许我们在代码中使用抽象的父类引用,从而简化编程,增加代码的通用性和可维护性。在实际项目中,合理利用这一特性,能够...
在例子中,"=========构造方法======== "(父类构造方法)和"=========子类构造方法======== "(子类构造方法)的顺序体现了这一点。 4. **对象操作**:一旦对象创建完成,就可以调用对象的方法。在示例中,"ts....
在编程世界中,继承是...7. **构造函数调用**:子类可以使用`super`调用父类构造器。 以上就是关于“子类调用抽象父类”这一主题的主要内容,理解并熟练运用这些概念,可以帮助我们更好地设计和实现面向对象的程序。
### Python中子类继承父类的`__init__`方法详解 #### 前言 在面向对象编程中,继承是一种强大的机制,它允许我们创建一个新的类(子类),该类继承了现有类(父类)的所有属性和方法。Python支持这种特性,并且...
以下是对标题“Java中子类对象的特点测试代码清单”和描述中的内容进行的详细解释。 首先,子类是父类的扩展,它能够继承父类的非私有属性和方法。在给出的代码示例中,`Chinese` 类是 `People` 类的子类,这表明 `...
- 子类构造函数未显式调用父类构造函数时,会调用父类的默认无参构造函数(如果存在)。 - 父类只有有参数的构造函数,子类必须显式调用。 2. **调用父类函数**: - 使用作用域解析运算符`::`,如`BaseClass::...
总结来说,Java中子类实例化的过程涉及以下几个关键点:1) 父类构造器的优先调用;2) 构造器的执行顺序和实例变量初始化的顺序;3) 访问修饰符对构造器调用的影响;4) 构造器链的形成。理解这些知识点对于编写高效、...
在探讨继承中子类与父类构造函数及静态块的执行顺序时,我们首先需要理解构造函数和静态块的基本概念及其在Java中的作用。构造函数主要用于初始化对象的状态,而静态块则是在类加载到内存中时执行的一段代码,通常...
6. **子父类构造方法的调用**: 子类构造器首先会调用父类的构造器(如果没有显式调用`super()`,则默认调用父类的无参构造器),然后再执行子类自己的初始化代码。 7. **JFrame布局管理器**: `JFrame`默认使用`...
- **知识点**: 选择题17考查Java中子类如何调用父类的构造函数。子类可以通过**B.super**关键字调用父类的构造函数。 #### 十八、Java核心类库 - **知识点**: 选择题18考查Java的核心类库。Java的核心类库包含在**D...
重载是创建多个同名但参数列表不同的方法,而重写是在继承关系中子类对父类方法的具体实现。重载关注的是方法签名(名称和参数),而重写关注的是行为的替换。 总的来说,“设计模式V2.0.doc”文档涵盖了Java设计...
- 子类继承的父类方法可以被子类的方法调用,这提供了代码的复用性,同时子类也可以通过覆盖(Override)父类方法来改变原有的行为。 - 如果子类中定义的方法无法访问父类的某个成员,那么这个成员实际上并没有...
- Java中的类可以被继承,子类继承父类的属性和方法,但无法继承构造方法。 - Circle类的定义展示了类的成员变量、构造方法和成员方法的创建。 - Cylinder类的定义展示了继承中子类如何扩展父类功能,如增加高度...
继承中子父类的成员特点是,成员变量如果子父类中成员变量名不同,直接使用即可,如果变量名相同,局部变量直接用,成员变量用this,父类变量用super。 在继承中,我们可以使用this和super关键字来调用成员变量、...
- 第4题提到了子类构造函数,Java中子类构造器默认会调用父类的无参构造器,`super()`用于调用父类构造器。 3. **数组操作**: - 第1题要求逆序输出数组,这需要理解数组索引的概念,并能实现反向遍历。 - 第3题...
Java 中子类和父类构造器的使用 - **构造器调用顺序**:理解构造器链式调用的过程,包括如何使用 `super()` 调用父类构造器。 - **this 和 super 的区别**:区分 `this()` 和 `super()` 的使用场景。 - **实例化...
17. 在继承中子类构造方法特性中,子类构造方法可以调用父类的构造方法,且 super 语句必须是子类构造方法中的第一个可执行语句。 18. BorderLayout 是把窗口分成东、南、西、北、中五个明显区域的布局管理器。 19...
4. 由继承性可知,程序中子类拥有的成员数目一定大于等于父类拥有的成员数目。() 解释:子类可以继承父类的成员,但是子类也可以有自己的成员,这样子类的成员数目可能大于父类的成员数目。 5. 抽象方法必须在...