我是靠谱客的博主 瘦瘦猎豹,最近开发中收集的这篇文章主要介绍Java中关于构造方法的详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

        • 1.构造方法的意义
        • 2.构造方法的特点
        • 3.构造方法与new之间的联系
        • 4.无参构造和有参构造
        • 5.继承中子类和父类构造方法的联系

1.构造方法的意义

  对象都是有初始属性的,例如人一出生就有体重,身高等,而不同的婴儿会有不同的初始属性。在Java中,用构造方法来在创建对象的同时初始化对象的属性。

2.构造方法的特点

  1. 构造方法的名称与本类的名称相同
  2. 构造方法无返回值
  3. 如果在类中没有定义构造方法,那么编译器会默认赠送一个,给这个类一个构造方法。若已经定义了构造方法,那就不会赠送了。

3.构造方法与new之间的联系

  个人对这两个的理解,就是java通过使用new关键字调用构造方法创建对象。构造方法是用来初始化对象的,而创建对象时,初始化和创建是被捆绑在一起的。
看这个例子:

public class CreateObject {
	public CreateObject() { // 构造方法
		System.out.println("创建对象");
	}
	
	public static void main(String args[]) { // 主方法
		new CreateObject(); // 创建对象
	}
}
//输出:
创建对象

这程序说明了,在创建对象的同时,自动调用构造方法,二者是捆绑在一起的。
参考:穆哥学堂

4.无参构造和有参构造

先提一点:

  • 重写:子类对父类方法的覆盖
  • 重载:本类中的同名方法,参数不同

  这里提一点,关于构造方法,又被称为构造器,个人认为称为构造方法有助于加深记忆。既然他是一种方法,也存在方法的性质,那么就可以被重载(不能重写),这里即为有参构造。
  那么,为什么要有这两种构造方法呢?他们可以同时存在于一个类中吗?

  • 先理解一下第一个问题,例如养成游戏,在创建一个角色时,需要对角色的属性进行初始化,若使用无参构造,则所创建角色属性全为一样的,假如我们让初始的角色属性值不同,那么有参构造就起作用了。也就是说不同的对象部分的属性可能不相同,初始化时需要无参和有参的有机结合
  • 再看第二个问题,是可以同时存在于一个类中的,根据调用方法的格式,来决定调用的是哪种构造方法。

总的来说,构造方法用来创建对象同时初始化对象,而构造方法重载使得创建对象更加灵活,便于创建不同的对象。

5.继承中子类和父类构造方法的联系

先看下面一段代码:

class Parent { // 父类
	Parent() {
		System.out.println("调用父类的parent()构造方法");
	}
}

class SubParent extends Parent { // 继承Parent类
	SubParent() {
		System.out.println("调用子类的SubParent()构造方法");
	}
}

public class Subroutine extends SubParent { // 继承SubParent类
	Subroutine() {
		System.out.println("调用子类的Subroutine()构造方法");
	}
	
	public static void main(String[] args) {
		Subroutine s = new Subroutine(); // 实例化子类对象
	}
}
#输出结果
调用父类的parent()构造方法
调用子类的SubParent()构造方法
调用子类的Subroutine()构造方法

  可以看到,在继承的机制中,在实例化子类对象时,java编译器会在子类的构造方法中自动调用父类的无参构造方法,而不是子类继承了父类的构造方法。换句话说,实例化子类对象时首先要实例化父类对象,然后再实例化子类对象。
参考:java从入门到精通,清华大学出版社

最后

以上就是瘦瘦猎豹为你收集整理的Java中关于构造方法的详解的全部内容,希望文章能够帮你解决Java中关于构造方法的详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部