【基础】构造器 红太狼 2022-08-23 08:56 181阅读 0赞 **一 构造器介绍** 对于方法的创建,可将其想象成为自己写的每个类都调用一次 initialize()。 这个名字提醒我们在使用对象之前,应首先进行这样的调用。但不幸的是,这也意味着用户必须记住调用方法。 在 Java 中,由于提供了名为“构建器”的一种特殊方法,所以类的设计者可担保每个对象都会得到正确的初始化。 若某个类有一个构建器,那么在创建对象时,Java 会自动调用那个构建器——甚至在用户毫不知觉的情况下 。所以说这是可以担保的!接着的一个问题是如何命名这个方法。 存在两方面的问题,第一个是我们使用的任何名字都可能与打算为某个类成员使用的名字冲突。 第二是由于编译器的责任是调用构建器,所以它必须知道要调用是哪个方法。C++采取的方案看来是最简单的, 且更有逻辑性,所以也在Java 里得到了应用:构建器的名字与类名相同。 这样一来,可保证象这样的一个方法会在初始化期间自动调用。 **构造器基本特性:** 1)构造器名字与类名相同,没有返回值,跟方法的void不一样。 2)构造器分为无参构造器(默认构造器),有参构造器,可以有多个,当我们new对象时可以根据 构造器传入不同的参数初始化对象。 **先来个简单例子** package com.lanhuigu.java.constructor; public class ConstructorTest { /** * 默认构造器,一般创建类时,自带,不需要我们写出来 */ public ConstructorTest() { System.out.println("默认构造器"); } /** * ===有参构造器,可以根据不同参数,创建不同的构造器,有实际需要时在创建=== */ /** * 有参构造器one */ public ConstructorTest(int i) { System.out.println("有参构造器one,初始化对象时传入的参数为:" + i); } /** * 有参构造器two */ public ConstructorTest(String paramName) { System.out.println("有参构造器two,初始化对象时传入的参数为:" + paramName); } /** * Test,运行main方法,根据不同的构造器,创建3个不同的对象 */ public static void main(String[] args) { ConstructorTest c1 = new ConstructorTest(); ConstructorTest c2 = new ConstructorTest(1); ConstructorTest c3 = new ConstructorTest("this is my constructor!"); System.out.println("简单测试一下创建出来的对象是不一样的,输出false---"+(c1 == c2)); } } **程序结果:** 默认构造器 有参构造器one,初始化对象时传入的参数为:1 有参构造器two,初始化对象时传入的参数为:this is my constructor! 简单测试一下创建出来的对象是不一样的,输出false---false **程序分析:** new ConstructorTest(); 就会分配相应的存储空间,并调用构建器。这样可保证在我们经手之前,对象得到正确的初始化。 请注意所有方法首字母小写的编码规则并不适用于构建器。这是由于构建器的名字必须与类名完全相同! 和其他任何方法一样,构建器也能使用自变量,以便我们指定对象的具体创建方式。 **二 构造器特性** **1. 衍生类集成于基础类,基础类构造器先执行,然后在执行衍生类构造器。** package com.lanhuigu.java.constructor; /** * 基类加载顺序 */ public class Cartoon extends Drawing{ public Cartoon() { System.out.println("Cartoon constructor"); } public static void main(String[] args) { Cartoon x = new Cartoon(); } } class Art { Art() { System.out.println("Art constructor"); } } class Drawing extends Art { Drawing() { System.out.println("Drawing constructor"); } } 执行结果: Art constructor Drawing constructor Cartoon constructor **2. 子类调用父类有参构造器,通过super关键字适配父类对应参数列表构造器。** package com.lanhuigu.java.constructor; /** * 子类通过super调用相应参数列表的父类构造器。 */ public class Chess extends BoardGame{ Chess() { super(11); System.out.println("Chess constructor"); } public static void main(String[] args) { Chess x = new Chess(); } } class Game { Game(int i) { System.out.println("Game constructor"); } } class BoardGame extends Game { BoardGame(int i) { super(i); System.out.println("BoardGame constructor"); } } 执行结果: Game constructor BoardGame constructor Chess constructor
相关 Java构造方法(构造器) 目录 1.什么是构造方法? 2.构造方法的使用 -------------------- 1.什么是构造方法? 构造方法(也称构造器 constructor):是 电玩女神/ 2023年10月14日 11:19/ 0 赞/ 20 阅读
相关 Scala主构造器和辅助构造器 类比下 Java构造器 Java构造器 基本语法 [修饰符] 方法名(参数列表) { 构造方法体 } 细节说明 1)在 Java 中一个 忘是亡心i/ 2023年01月13日 14:59/ 0 赞/ 212 阅读
相关 【基础】构造器 一 构造器介绍 对于方法的创建,可将其想象成为自己写的每个类都调用一次 initialize()。 这个名字提醒我们在使用对象之前,应首先进行这样的调用。但不幸的是 红太狼/ 2022年08月23日 08:56/ 0 赞/ 182 阅读
相关 构造器(C#) 一个东西的出现自然是有原因的,就像构造器一样。那为什么会有构造器呢? 首先,类都有默认的构造器,不管你是否显示定义。当我们要读取或赋值类中的属性时,需要先用new操作符实例化 ╰半橙微兮°/ 2022年08月21日 00:12/ 0 赞/ 180 阅读
相关 JS 基础 —— Function 构造器及其对象、方法 一、基础 Function 是一个构造器,能创建Function对象,即JavaScript中每个函数实际上都是Function 对象。 构造方法: new Fu 怼烎@/ 2022年07月16日 09:50/ 0 赞/ 216 阅读
相关 构造器 构造器的作用:创建对象 构造器格式:访问修饰符 类名(参数列表) \{ \} 为什么不写返回类型呢?因为本身构造器的作用就是返回一个对象,不允许更改其返 小灰灰/ 2022年06月04日 04:47/ 0 赞/ 234 阅读
相关 【Spring基础】IOC使用构造器依赖注入 前言 Github:[https://github.com/yihonglei/thinking-in-spring][https_github.com_yihongle 一时失言乱红尘/ 2022年06月03日 00:56/ 0 赞/ 241 阅读
相关 构造器注入 【例】通过构造器为User注入属性 在User类中创建有参构造方法 package com.shw; public class User { 深碍√TFBOYSˉ_/ 2022年05月21日 23:30/ 0 赞/ 225 阅读
相关 scala构造器 [2019独角兽企业重金招聘Python工程师标准>>> ][2019_Python_] ![hot3.png][] object ConstructorTest \{ 墨蓝/ 2022年01月14日 01:21/ 0 赞/ 303 阅读
还没有评论,来说两句吧...