我是靠谱客的博主 开放小鸭子,最近开发中收集的这篇文章主要介绍Java核心技术卷一 -第四章:对象构造系列文章目录前言一、重载二、默认字段初始化三、无参数的构造器四、调用另一个构造器总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

系列文章目录

Java核心技术卷一 -第一章:java“白皮书”的关键术语
Java核心技术卷一 -第三章:数据类型
Java核心技术卷一 -第三章:变量与常量
Java核心技术卷一 -第三章:运算符
Java核心技术卷一 -第三章:字符串
Java核心技术卷一 -第三章:输入与输出
Java核心技术卷一 -第三章:数组
Java核心技术卷一 -第四章:类之间的关系-依赖
Java核心技术卷一 -第四章:预定义类-LocalDate类小应用
Java核心技术卷一 -第四章:构造器
Java核心技术卷一 -第四章:null引用
Java核心技术卷一 -第四章:方法参数

文章目录

  • 系列文章目录
  • 前言
  • 一、重载
    • 注意;
  • 二、默认字段初始化
    • 注释:
  • 三、无参数的构造器
    • 警告:
  • 四、调用另一个构造器
  • 总结


前言

前面已经学习了编写简单的构造器,可以定义对象的初始状态。但是,由于对象构造非常重要,所以Java提供了多种编写构造器的机制。下面将粗略介绍这些机制。

一、重载

有些类有多个构造器。例如,可以如下构造一个空的StringBuilder对象:

var messages = new StringBuilder();

或者,可以指定一个初始字符串:

var todoList = new StringBuilder("To do:n");

这种功能叫做重载(overloading)。如果多个方法(比如,StringBuilder构造器方法)有相同的名字、不同的参数,便出现了重载。编译器必须挑选出具体调用哪个方法。它用各个方法首部中的参数类型与特定方法调用中所使用的值类型进行匹配,来选出正确的方法。如果编译器找不到匹配的参数,就会产生编译时错误,因为根本不存在匹配,或者没有一个比其他的更好(这个查找匹配的过程被称为重载解析(overloading resolution)。

注意;

Java充许重载任何方法,而不只是构造器方法。因此,要完整地描述一个方法,需要指定方法名以及参数类型。这叫作方法的签名(signature)。例如,String类有4个名为index0f的公共方法。它们的签名是

indexof(int)
indexuf(int,int)
indexOf(String)
indexOf(String,int)

返回类型不是方法签名的一部分。也就是说,不能有两个名字相同、参数类型也相同却有不同返回类型的方法

二、默认字段初始化

如果在构造器中没有显式地为字段设置初值,那么就会被自动地赋为默认值:数值为θ、布尔值为false、对象引用为null。有些人认为依赖默认值的做法是一种不好的编程实践。确实,如果不明确地对字段进行初始化,就会影响程序代码的可读性。

注释:

这是字段与局部变量的一个重要区别。方法中的局部变量必须明确地初始化。但是在类中,如果没有初始化类中的字段,将会自动初始化为默认值(0、false或null)。

三、无参数的构造器

很多类都包含一个无参数的构造器,由无参数构造器创建对象时,对象的状态会设置为适当的默认值。例如,以下是Employee类的无参数构造器:

public Employee()
{
name="";
salary =0;
hireDay LocalDate.now();
}

如果写一个类时没有编写构造器,就会为你提供一个无参数构造器。这个构造器将所有的实例字段设置为默认值。于是,实例字段中的数值型数据设置为,布尔型数据设置为false,所有对象变量将设置为null。

但是,如果类中提供了至少一个构造器,但是没有提供无参数的构造器,那么构造对象时如果不提供参数就是不合法的。

警告:

请记住,当类没有任何其他构造器的时候,你才会得到一个默认的无参数构造器。编写类的时候,如果写了一个你自己的构造器,要想让这个类的用户能够通过以下调用构造一个实例:

new ClassName()

你就必须提供一个无参数的构造器。当然,如果希望所有字段被赋予默认值,只需要提供以下代码:

public ClassName()
{
}

四、调用另一个构造器

关键字this指示一个方法的隐式参数。不过,这个关键字还有另外一个含义。
如果构造器的第一个语句形如ths(.…),这个构造器将调用同一个类的另一个构造器。下面是一个典型的例子:

public Employee(double s)
{
//calls Employee(String,double)
this("Employee #” + nextId,s);
nextId++;
}

当调用new Employee(60000)时,Employee(double)构造器将调用Employee(String,double)构造器。采用这种方式使用this关键字非常有用,这样对公共的构造器代码只需要编写一次即可。

总结

以上就是本文的内容,记录了一些关于java“对象构造”的内容,本人也是刚开始接触java,不能保证总结内容的正确性,若是有错误的话,欢迎大家指出,谢谢!

最后

以上就是开放小鸭子为你收集整理的Java核心技术卷一 -第四章:对象构造系列文章目录前言一、重载二、默认字段初始化三、无参数的构造器四、调用另一个构造器总结的全部内容,希望文章能够帮你解决Java核心技术卷一 -第四章:对象构造系列文章目录前言一、重载二、默认字段初始化三、无参数的构造器四、调用另一个构造器总结所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部