目录

构造器

构造器重载

this的作用


构造器

构造器是一个特殊的方法,用来进行实例初始化的

  1. 无需声明返回值类型,如果声明了返回值类型,他就变成了普通的方法
  2. 构造器的作用:构造器是用来初始化实例的属性,new是用来创建对象的
  3. 构造器重载 —— 完全类似于方法重载。
    1. 两同:同一个类,构造器名相同
    2. 一不同:形参不同
public class ConstructorTest {public String name;public int count;// 提供自定义构造器,该构造器包含两个参数public ConstructorTest(String name, int count) {//构造器里的this代表它进行的初始化的对象//下面两行代码将传入的2个参数赋给this代表对象的name和count实例变量this.name = name;this.count = count;}public static void main(String[] args) {//使用自定义的构造器来创造器//系统将会对该对象执行自定义的初始化ConstructorTest tc = new ConstructorTest("dfgcs", 22);//输出ConstructorTest对象的name和count两个实例变量System.out.println(tc.name);System.out.println(tc.count);}
}

构造器重载

同一个类里具有多个构造器,多个构造器的形参列表不同,即被称为构造器重载。构造器重载允许Java类里包含多个初始化逻辑,从而允许使用不同的构造器来初始化Java对象。这是通过形参的不同来找相关的构造器。

构造器重载和方法重载类似:

  1. 要求构造器的名字相同,完全类似于方法重载。
  2. 两同:同一个类,构造器名相同
  3. 一不同:形参不同

public class ConstructorOverload {public String name;public int count;//提供一个无参数构造器public ConstructorOverload() {}//提供带两个参数的构造器//对该构造器返回的对象执行初始化public ConstructorOverload(String name,int count) {this.name=name;this.count=count;}public static void main(String[] args) {//通过无参数构造器创建ConstructorOverload对象ConstructorOverload oc1 =new ConstructorOverload();//通过有参数构造器创建ConstructorOverload对象ConstructorOverload oc2 =new ConstructorOverload("构造器的重载",220000);System.out.println(oc1.name+" "+oc1.count);System.out.println(oc2.name+" "+oc2.count);}
}

this的作用

  1. this的引用【this.XXXX】

    1. 在构造器中,this代表构造器正在初始化对象
    2. 在方法中,this代表调用该方法的实例
  2. this的调用【this(XXXX)】
    1. this调用当前类中另一个重载的构造器

public class Cat {public String name;public String color;public double weight;//两个参数的构造器public Cat(String name,String color) {this.name=name;this.color=color;}//三个参数的构造器public Cat(String name,String color,double weight) {//通过this调用另一个重载的构造器的初始化代码//这是从软件工程角度要求的,降低软件维护成本this(name,color);//下面this引用该构造器正在初始化的Java对象this.weight=weight;}public void info() {System.out.println(name+"是"+color+"的"+" , 有"+weight+"kg");}public static void main(String[] args) {Cat cat = new Cat("小红", "红");cat.info();Cat cat2=new Cat("小蓝","蓝",52.36);cat2.info();}
}

【Java】5.5 深入构造器相关推荐

  1. Atitti.java exp ast java表达式语法ast构造器

    Atitti.java exp ast java表达式语法ast构造器 /atiplat_cms/src/com/attilax/lang/AstParser.java 原理 分割tokens_sli ...

  2. java AST 表达式_Atitti.java exp ast java表达式语法ast构造器

    Atitti.java exp ast java表达式语法ast构造器 /atiplat_cms/src/com/attilax/lang/AstParser.java 原理 分割tokens_sli ...

  3. Effective Java之用私有构造器或者枚举类型强化Singleton属性(三)

    1.饿汉式加载 类加载时就创建 public class MaYun { private static Mayun instance = new Mayun(); private static get ...

  4. java的子类调用构造器的顺序_深入剖析Java继承中的初始化与构造器调用关系

    声明:本文为牛旦教育原创,所有权保留,转载请注明来源. 一个对象有两件事:状态和行为. 类中的实例变量表示其对象的状态. 实例方法表示其对象的行为. 类的每个对象都保持自己的状态. 创建类的对象时,将 ...

  5. java集合之TreeMap 构造器 方法 比较器

    java集合之TreeMap 基于红黑树(Red-Black tree)的 NavigableMap 实现. 映射根据其键的自然顺序进行排序,或者通过映射创建时提供的 Comparator 进行排序, ...

  6. 一起读Java编程思想(2)---构造器的初始化与清理

    初始化与清理 用构造器确保初始化 每个类都要定义一个initialize()方法,提醒在使用对象之前必须调用这个方法,使得类的设计者可以确保每个对象都可以被初始化. 构造函数是没有返回类型的函数,用于 ...

  7. java 必须存在默认构造器_Java默认构造方法在字节码的实现

    方法在程序的重要性不言而喻,了解方法在字节码中的表达能够使我们开发做到更加心中有数. 再看class文件结构 上一步已经分析完了class文件中的字段(field_info)的表达,接下来就是方法数( ...

  8. Effective Java之通过私有构造器强化不可实例化能力(四)

    比如很多工具类,成员都是静态的,你写这个类的原因是想拿来直接用,而不需要实例化的 但是在缺少显示构造函数的时候,编译器会给你默认生成一个构造函数,这样这个类就有可能实例化 企图将类做成抽象类来强制该类 ...

  9. 黑马JAVA P104 继承后构造器的特点、this、super使用总结

    package com.itheima.d12_extends_constructor;public class Animal {public Animal(){System.out.println( ...

  10. Java自学之路——构造器(Constructor)

    上一篇文章简单的介绍了类和对象,下面讲的是与类和对象息息相关的构造方法. 1.构造器基本介绍 构造方法又叫构造器,是类的一种特殊方法,它的主要作用是完成对新对象的初始化. 它有几个特点: (1)方法名 ...

最新文章

  1. 用Python批量实现多Excel多Sheet合并的4种方法
  2. Thinking in java基础之集合框架
  3. Linux系统调用的运行过程【转】
  4. telnet不能用,提示:-bash: telnet: command not found
  5. [iOS]利用通知实现监听系统键盘
  6. Linux chroot命令
  7. 批量识别图片大致不相同图片_一款非常优秀的文字识别工具,可以批量图片识别文字...
  8. [mooc]open course on github
  9. Android开发——项目实例(一)迷你背单词软件
  10. 技术研发团队管理计划方案书
  11. 服务器上文件共享有哪些协议,访问局域网共享文件使用的是什么协议
  12. linux查看数据区块大小,Linux显示指定区块大小为1048576字节
  13. java十六进制转为十进制,Java将十六进制转换为十进制
  14. 性能优化-图片压缩格式的选择(ETC和ASTC)
  15. 19.猜数字的游戏:随机生成数字与输入数字进行比较
  16. 微信小程序跳转微信内置浏览器
  17. 百度网盘不开通会员5M/S下载方法
  18. 安卓手机的指纹存储在手机内部有没有可能被窃取?
  19. 用HTML+js实现求圆的面积和周长
  20. 手机android进程管理,手机进程管理app_华为手机进程管理_手机自动进程管理软件-多特软件站安卓网...

热门文章

  1. 服务器控件的异步请求——UpdatePanel和ScriptManager
  2. 如何编写高质量CSS
  3. [Linq]Linq To Xml (待整理)
  4. C++ Primer 5th笔记(chap 16 模板和泛型编程)实例化
  5. 密码技术应用--AES文件加解密
  6. 47. 全排列 II(回溯算法)
  7. MySQL—三表查询
  8. linux kernel的spinlock代码导读和分析
  9. 破解RSA的一些技术
  10. 树莓派3开wifi热点