看到一句话:子类的构造方法,不管这个方法带不带参数,默认地它都会去寻找父类的不带参数的构造方法,如果父类没有不带参数的构造方法,那么子类必须要用super关键字来调用父类的构造方法,否则编译不能通过。
父类:
class Parent { private String name; public Parent(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
子类:
class Child extends Parent { private String name; public Child() { super(""); } public Child(String name) { super(""); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
此处父类是没有定义无参构造方法的,只有有参构造方法(如果有参构造方法删掉,系统会默认为类构造方法为无参的),此时如果在子类的无参和有参的构造方法里面没有super关键字来调用父类的有参构造方法,系统将会编译出错。
总结:参考文章链接
任何类,都会调用父类的构造方法,如果子类中没有显示地调用,则默认调用父类无参的构造方法,否则必须手工写上调用哪个,而且是在第一行。
@为什么子类构造方法一定要调用父类的构造方法?
子类继承了父类的属性和方法,子类要用父类的属性和方法,就要先初始化父类,这就要调用到父类的构造方法了。
@如果父类有一个属性是private,那子类还有这个属性吗?
子类继承后,这个经过父类初始化后的属性就是子类自己的了,子类虽然不能访问父类的私有属性,但是可以操作父类初始化后给他的这个属性。
@子类和父类有同名属性
如果同名同类型,子类会覆盖父类同名的属性,父类初始化该属性的值将不会影响子类
@子类和父类有同名方法
如果同名方法返回值和形参都相同,子类方法将替代父类方法
如果同名方法返回值不同,形参相同,那么该方法将不被允许,因为这相当于在子类中同时有了两个方法名和形参值相同的方法
其余情况均相当于在子类方法中多出了几个重载方法
相关推荐
Java 中的继承(子类调用父类构造方法还不懂) Java 中的继承是指一个类可以继承另一个类的属性和方法,这样可以实现代码的复用和提高开发效率。在 Java 中,继承使用关键字 `extends` 来实现。 Java 中继承的注意...
java训练题目 编写程序实现子类对父类构造方法的引用?
Java的子类调用父类的构造方法.pdf
在Java编程语言中,子类继承父类是一种常见的特性,它允许子类扩展或复用父类的功能。当我们创建一个子类对象并将其赋值给父类引用时,这种行为被称为向上转型(Upcasting)。这一过程是自动且安全的,因为子类对象...
java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...
它允许子类从父类中继承属性和方法,从而实现代码的重用和扩展。本文将深入探讨在继承中的程序执行顺序,以及子类与父类的执行顺序问题。 首先,我们需要了解Java或Python等面向对象语言中类的构造过程。当一个类...
如果父类没有无参构造器,则必须在子类构造器中显式调用父类构造器,通常使用`super(参数列表);`。 - 如果子类中定义了与父类同名的成员变量,父类的成员变量将被隐藏。同样地,如果子类定义了与父类同名且具有相同...
在Java编程语言中,子类继承父类时,构造方法起着至关重要的作用。它们用于初始化对象,并在创建新实例时执行特定的设置步骤。理解如何在子类中使用构造方法是掌握面向对象编程的关键部分。本文将深入探讨Java子类...
- 子类构造函数未显式调用父类构造函数时,会调用父类的默认无参构造函数(如果存在)。 - 父类只有有参数的构造函数,子类必须显式调用。 2. **调用父类函数**: - 使用作用域解析运算符`::`,如`BaseClass::...
Java中父类调用子类的方法是面向对象编程中一个常见的问题,了解如何在Java中实现父类调用子类的方法对于编程开发者来说非常重要。本文将通过示例代码和详细的解释,介绍三种方式来实现父类调用子类的方法,并对每...
但如果父类中没有无参构造方法,或者需要在子类中传递特定参数到父类构造方法,则需要使用`super()`关键字显式调用父类的构造方法。 #### 六、构造方法调用的顺序 在类的继承结构中,构造方法的调用顺序遵循自底...
这可以通过在子类的构造方法中使用`super()`关键字来实现,如下所示: ```java public class FatherClass { public FatherClass() { // 父类构造方法 } } public class SonClass extends FatherClass { public...
关于继承的更多细节,Java语言还支持单继承和多层继承,即一个类只能有一个直接父类,但通过继承链可以间接地继承多个类。继承与封装、多态一起构成了面向对象程序设计的三大基本特征。 在项目中直接运行代码之前,...
在编程世界中,继承是...7. **构造函数调用**:子类可以使用`super`调用父类构造器。 以上就是关于“子类调用抽象父类”这一主题的主要内容,理解并熟练运用这些概念,可以帮助我们更好地设计和实现面向对象的程序。
这是因为如果子类没有指定要调用哪个父类构造方法,编译器会选择最安全、最通用的选择,即父类的无参构造方法。当然,如果子类需要使用父类的有参数构造方法,它仍然可以在构造方法中显式调用`super(parameters...)`...
这种情况下,必须在子类的构造方法中使用关键字 super 来调用父类的构造方法。例如: ```java class Father { public Father(String t) {} // 带参数的构造方法 public Father() {} // 无参构造方法 } public ...
5. 父类构造方法的调用:在Java的继承体系中,子类可以通过super()语句来显式调用父类的构造方法。如果子类构造方法的定义中没有显式调用父类的构造方法,则编译器会自动插入一个对父类无参数构造方法的调用。但是,...
在构造方法中,`this`可以用来调用同一类的其他构造器,实现代码共享。 - `this`还可以用来区分实例变量和局部变量,或方法参数,当它们有相同的名称时。 ```java public class Example { private String name; ...