`
QI程序猿
  • 浏览: 17802 次
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java中关于子类和父类构造方法的小问题

 
阅读更多

看到一句话:子类的构造方法,不管这个方法带不带参数,默认地它都会去寻找父类的不带参数的构造方法,如果父类没有不带参数的构造方法,那么子类必须要用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中的继承(子类调用父类构造方法还不懂).doc

    Java 中的继承(子类调用父类构造方法还不懂) Java 中的继承是指一个类可以继承另一个类的属性和方法,这样可以实现代码的复用和提高开发效率。在 Java 中,继承使用关键字 `extends` 来实现。 Java 中继承的注意...

    子类引用父类构造方法

    java训练题目 编写程序实现子类对父类构造方法的引用?

    Java的子类调用父类的构造方法.pdf

    Java的子类调用父类的构造方法.pdf

    java 子类对象赋值给父类对象的使用

    在Java编程语言中,子类继承父类是一种常见的特性,它允许子类扩展或复用父类的功能。当我们创建一个子类对象并将其赋值给父类引用时,这种行为被称为向上转型(Upcasting)。这一过程是自动且安全的,因为子类对象...

    java 静态非静态 字段方法 子类父类构造_初始化顺序!

    java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...

    再次详细说明在继承中的程序执行顺序,子类与父类到底哪个先执行

    它允许子类从父类中继承属性和方法,从而实现代码的重用和扩展。本文将深入探讨在继承中的程序执行顺序,以及子类与父类的执行顺序问题。 首先,我们需要了解Java或Python等面向对象语言中类的构造过程。当一个类...

    论JAVA继承机制中父类与子类的关系

    如果父类没有无参构造器,则必须在子类构造器中显式调用父类构造器,通常使用`super(参数列表);`。 - 如果子类中定义了与父类同名的成员变量,父类的成员变量将被隐藏。同样地,如果子类定义了与父类同名且具有相同...

    java 子类构造方法

    在Java编程语言中,子类继承父类时,构造方法起着至关重要的作用。它们用于初始化对象,并在创建新实例时执行特定的设置步骤。理解如何在子类中使用构造方法是掌握面向对象编程的关键部分。本文将深入探讨Java子类...

    C++/JAVA/C#子类调用父类函数情况总结

    - 子类构造函数未显式调用父类构造函数时,会调用父类的默认无参构造函数(如果存在)。 - 父类只有有参数的构造函数,子类必须显式调用。 2. **调用父类函数**: - 使用作用域解析运算符`::`,如`BaseClass::...

    Java中父类怎么调用子类的方法

    Java中父类调用子类的方法是面向对象编程中一个常见的问题,了解如何在Java中实现父类调用子类的方法对于编程开发者来说非常重要。本文将通过示例代码和详细的解释,介绍三种方式来实现父类调用子类的方法,并对每...

    java构造方法

    但如果父类中没有无参构造方法,或者需要在子类中传递特定参数到父类构造方法,则需要使用`super()`关键字显式调用父类的构造方法。 #### 六、构造方法调用的顺序 在类的继承结构中,构造方法的调用顺序遵循自底...

    java 简述父与子类的关系及构造方法

    这可以通过在子类的构造方法中使用`super()`关键字来实现,如下所示: ```java public class FatherClass { public FatherClass() { // 父类构造方法 } } public class SonClass extends FatherClass { public...

    JAVA 子类继承父类的范例 可直接运行

    关于继承的更多细节,Java语言还支持单继承和多层继承,即一个类只能有一个直接父类,但通过继承链可以间接地继承多个类。继承与封装、多态一起构成了面向对象程序设计的三大基本特征。 在项目中直接运行代码之前,...

    子类调用抽象父类.zip

    在编程世界中,继承是...7. **构造函数调用**:子类可以使用`super`调用父类构造器。 以上就是关于“子类调用抽象父类”这一主题的主要内容,理解并熟练运用这些概念,可以帮助我们更好地设计和实现面向对象的程序。

    子类需不需要调用父类有参或者无参问题1

    这是因为如果子类没有指定要调用哪个父类构造方法,编译器会选择最安全、最通用的选择,即父类的无参构造方法。当然,如果子类需要使用父类的有参数构造方法,它仍然可以在构造方法中显式调用`super(parameters...)`...

    浅谈Java程序中的构造方法调用.pdf

    这种情况下,必须在子类的构造方法中使用关键字 super 来调用父类的构造方法。例如: ```java class Father { public Father(String t) {} // 带参数的构造方法 public Father() {} // 无参构造方法 } public ...

    Java语言程序设计教学中构造方法的研究.pdf

    5. 父类构造方法的调用:在Java的继承体系中,子类可以通过super()语句来显式调用父类的构造方法。如果子类构造方法的定义中没有显式调用父类的构造方法,则编译器会自动插入一个对父类无参数构造方法的调用。但是,...

    构造方法JAVA构造方法

    在构造方法中,`this`可以用来调用同一类的其他构造器,实现代码共享。 - `this`还可以用来区分实例变量和局部变量,或方法参数,当它们有相同的名称时。 ```java public class Example { private String name; ...

Global site tag (gtag.js) - Google Analytics