Java基础-构造方法

构造方法

在初始化对象的时候,前面我们都是直接对每个变量赋值,有一个更简单的方式对实例变量赋初值,就是构造方法,我们先看下代码。在Point类定义中增加如下代码:

public Point(){

    this(0,0);

}

public Point(int x, int y){

    this.x = x;

    this.y = y;

}

这两个就是构造方法,构造方法可以有多个。不同于一般方法,构造方法有一些特殊的地方:

1)名称是固定的,与类名相同。这也容易理解,靠这个用户和Java系统就都能容易地知道哪些是构造方法。

2)没有返回值,也不能有返回值。构造方法隐含的返回值就是实例本身。

与普通方法一样,构造方法也可以重载。第二个构造方法是比较容易理解的,使用this对实例变量赋值。

我们解释下第一个构造方法,this(0,0)的意思是调用第二个构造方法,并传递参数“0,0”,我们前面解释说this表示当前实例,可以通过this访问实例变量,这是this的第二个用法,用于在构造方法中调用其他构造方法。

这个this调用必须放在第一行,这个规定也是为了避免误操作。构造方法是用于初始化对象的,如果要调用别的构造方法,先调别的,然后根据情况自己再做调整,而如果自己先初始化了一部分,再调别的,自己的修改可能就被覆盖了。

这个例子中,不带参数的构造方法通过this(0,0)又调用了第二个构造方法,这个调用是多余的,因为x和y的默认值就是0,不需要再单独赋值,我们这里主要是演示其语法。

我们来看下如何使用构造方法,代码如下:

Point p = new Point(2,3);

这个调用就可以将实例变量x和y的值设为2和3。前面我们介绍new Point()的时候说,它至少做了两件事,一件是分配内存,另一件是给实例变量设置默认值,这里我们需要加上一件事,就是调用构造方法。调用构造方法是new操作的一部分。

通过构造方法,可以更为简洁地对实例变量进行赋值。关于构造方法,下面我们讨论两个细节概念:一个是默认构造方法;另一个是私有构造方法。

1.默认构造方法

每个类都至少要有一个构造方法,在通过new创建对象的过程中会被调用。但构造方法如果没什么操作要做,可以省略。Java编译器会自动生成一个默认构造方法,也没有具体操作。但一旦定义了构造方法,Java就不会再自动生成默认的,具体什么意思呢?在这个例子中,如果我们只定义了第二个构造方法(带参数的),则下面语句:

Point p = new Point();

就会报错,因为找不到不带参数的构造方法。

为什么Java有时候自动生成,有时候不生成呢?在没有定义任何构造方法的时候,Java认为用户不需要,所以就生成一个空的以被new过程调用;定义了构造方法的时候,Java认为用户知道自己在干什么,认为用户是有意不想要不带参数的构造方法,所以不会自动生成。

2.私有构造方法

构造方法可以是私有方法,即修饰符可以为private,为什么需要私有构造方法呢?大致可能有这么几种场景:

1)不能创建类的实例,类只能被静态访问,如Math和Arrays类,它们的构造方法就是私有的。

2)能创建类的实例,但只能被类的静态方法调用。有一种常见的场景:类的对象有但是只能有一个,即单例(单个实例)。在这种场景中,对象是通过静态方法获取的,而静态方法调用私有构造方法创建一个对象,如果对象已经创建过了,就重用这个对象。

3)只是用来被其他多个构造方法调用,用于减少重复代码。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 构造方法是一种特殊的方法,用于创建对象时初始化对象的属性。它的名称与名相同,没有返回型,可以有参数。当创建一个对象时,构造方法会自动调用,以初始化对象的属性。 toString方法是Object的一个方法,用于返回对象的字符串表示形式。如果没有重写该方法,则默认返回对象的名和哈希码。重写该方法可以返回自定义的字符串表示形式,便于程序员调试和输出对象信息。 ### 回答2: Java是一种面向对象编程语言。面向对象编程的核心思想是将现实世界的实物、概念和关系转化为代码、对象和属性。构造方法和toString()方法是Java面向对象编程的两种基础机制。 构造方法是一种特殊的方法,在对象被创建时自动调用。它用于初始化对象的属性。Java每个都必须有至少一个构造方法。如果没有显式地定义构造方法,编译器将自动生成一个默认构造方法构造方法的名称与名相同,没有返回值型。 在构造方法,可以使用this关键字引用正在创建的对象。例如,可以使用this.x来访问对象的属性x。此外,还可以使用super关键字调用超(父)的构造方法。 与构造方法相关的概念还包括重载(overloading)和默认值。重载指的是同一个可以有多个方法名称相同但参数不同的构造方法。默认值指在构造方法没有给属性赋值时,Java会根据属性型自动赋一个默认值。 在Java,每个对象都有toString()方法。它通常被用来将对象转化为字符串形式,以方便输出和调试。默认情况下,toString()方法输出包含名和对象的哈希码的信息。开发者可以重写toString()方法,以实现将对象的属性转化为字符串的目的。 在创建时,应该根据需要定义适当的构造方法和toString()方法。使用构造方法可以封装对象的初始化过程,使代码更加简洁和易于维护。使用toString()方法可以方便地输出对象的属性值,帮助开发者进行调试。 ### 回答3: 面向对象编程构造方法和toString方法是两个最基础的方法。构造方法在创建对象时调用,用于初始化对象的数据成员;而toString方法则是用于输出对象的字符串形式,方便程序员查看和调试。在Java,每个都至少有一个构造方法,一般情况下也都需要实现toString方法。 构造方法名相同,不需要设定返回值型,可以有多个构造方法,只需参数型或顺序不同即可重载。构造方法在对象创建时自动调用,因此无需手动调用,其参数与对象的成员变量相匹配,可以自由设定。构造方法可以用于初始化对象的成员变量,比如给对象的数据成员赋初值,或者调用其他构造方法。 toString方法是用于将一个对象转化为一个表示该对象的字符串。当我们需要打印某个对象时,系统就会自动调用该对象的toString()方法,如果我们没有定义这个方法,就会输出一个默认的地址字符串。因此,重写toString()方法可以使输出的内容更加友好和易于理解。 在Java,如果一个没有覆盖Object的toString()方法,那么当我们直接输出这个的对象时,Java虚拟机会调用Object的toString()方法,返回一个似于名去掉包名之后再加上“@”符号和哈希码的字符串。而通过覆盖toString()方法,我们可以让输出的内容与对象的状态相关,输出我们关心的信息。 综上所述,构造方法和toString方法是面向对象编程基础的方法之一。构造方法是用于创建和初始化对象,在对象创建时自动调用,可以自由设定其参数和功能;而toString方法则是用于输出对象的字符串表示形式,方便程序员查看和调试。通过正确使用构造方法和toString方法,可以让我们更好地理解和处理Java的对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值