java构造函数_Java函数构造方法

本文详细介绍了Java中的构造函数,包括其作用、如何使用以及如何通过构造函数初始化对象。通过一个Person类的例子,展示了如何定义无参和带参的构造方法,并解释了如何在主类中调用构造函数创建对象。此外,还讨论了构造函数参数命名的注意事项以及如何使用`this`关键字。最后,展示了如何根据需求定义多个构造方法以满足不同初始化需求。
摘要由CSDN通过智能技术生成

通过优锐课的java架构学习中,了解了关于java函数构造方法,分享给大家学习参考。

使用Java构造函数创建对象

Java构造函数创建一个已定义对象的新实例。 本文讨论如何使用Java构造函数方法创建Person对象。

注意:对于本示例,你需要在同一文件夹中创建两个文件:Person.java定义Person类,PersonExample.java包含创建Person对象的main方法。

构造方法

让我们开始创建一个Person类,它具有四个私有字段:firstName,lastName,address和username。 这些字段是私有变量,它们的值共同构成对象的状态。 我们还添加了最简单的构造方法:

 public class Person {
 
 private String firstName;
 private String lastName;
 private String address;
 private String username;
 
 //The constructor method
 public Person()
 {
 
 }
 } 
 

构造函数方法与任何其他公共方法相似,不同之处在于它与类共享相同的名称,并且不能返回值。 它可以没有一个,一个或多个参数。

当前,我们的构造函数方法什么也不做,现在是时候考虑这对于Person对象的初始状态意味着什么了。 如果我们保持现状,或者我们的Person类中没有包含构造函数方法(在Java中你可以定义一个没有一个的类),那么字段将没有值-我们当然希望我们的人有一个名字 和地址以及其他特征。 如果你认为有可能无法按预期使用对象,并且在创建对象时可能未初始化字段,请始终使用默认值定义它们:

 public class Person {
 
 private String firstName = "";
 private String lastName = "";
 private String address = "";
 private String username = "";
 
 //The constructor method
 public Person()
 {
 
 }
 } 
 

通常,为了确保构造函数方法有用,我们将其设计为带有参数。 通过这些参数传递的值可用于设置私有字段的值:

 public class Person {
 
 private String firstName;
 private String lastName;
 private String address;
 private String username;
 
 // The constructor method
 public Person(String personFirstname, String personLastName, String personAddress, String personUsername)
 {
 firstName = personFirstName;
 lastName = personLastName;
 address = personAddress;
 username = personUsername;
 }
 
 // A method to display the state of the object to the screen
 public void displayPersonDetails()
 {
 System.out.println("Name: " + firstName + " " + lastName);
 System.out.println("Address: " + address);
 System.out.println("Username: " + username);
 }
 } 

现在,我们的构造函数方法希望将四个字符串的值传递给它。 然后将它们用于设置对象的初始状态。 我们还添加了一个名为displayPersonDetails()的新方法,使我们能够在对象创建后查看其状态。

调用构造方法

与对象的其他方法不同,必须使用“ new”关键字来调用构造函数方法:Unlike

 public class PersonExample {
 
 public static void main(String[] args) {
 
 Person dave = new Person("Dave", "Davidson", "12 Main St.", "DDavidson");
 dave.displayPersonDetails();
 
 }
 } 

这是我们所做的:

00001. 要创建Person对象的新实例,我们首先定义一个Person类型的变量来保存该对象。 在这个例子中,我们称它为戴夫。

00002. 在等号的另一端,我们调用Person类的构造方法,并向其传递四个字符串值。 我们的构造方法将采用这四个值,并将Person对象的初始状态设置为:firstName =“ Dave”,lastName =“ Davidson”,地址=“ 12 Main St”,用户名=“ DDavidson”。

注意我们如何切换到Java主类来调用Person对象。 当你使用对象时,程序将跨越多个.java文件。 确保将它们保存在同一文件夹中。 要编译和运行程序,只需编译并运行Java主类文件(即PersonExample.java)即可。 Java编译器非常聪明,可以意识到你也希望编译Person.java文件,因为它可以看到你在PersonExample类中使用了它。

参数命名

如果构造函数方法的参数与私有字段具有相同的名称,则Java编译器会感到困惑。 在此示例中,你可以看到我们通过在参数前面加上单词“ person”来区分它们。 值得一提的是,还有另一种方式。 我们可以使用“ this”关键字来代替:

 // The constructor method
 public Person(String firstName, String lastName, String address, String username)
 {
 this.firstName = firstName;
 this.lastName = lastName;
 this.address = address;
 this.username = username;
 
 } 

关键字“ this”告诉Java编译器,要为其赋值的变量是由类定义的变量,而不是参数。 这是编程风格的问题,但是这种方法可以帮助我们定义构造函数参数,而不必使用多个名称。

不止一种构造方法

在设计对象类时,不限于仅使用一种构造方法。 你可能会决定有几种方法可以初始化对象。 使用多个构造函数方法的唯一限制是参数必须不同。

想象一下,当我们创建Person对象时,我们可能不知道用户名。 让我们添加一个新的构造函数方法,该方法仅使用firstName,lastName和address设置Person对象的状态:

 public class Person {
 
 private String firstName;
 private String lastName;
 private String address;
 private String username;
 
 // The constructor method
 public Person(String firstName, String lastName, String address, String username)
 {
 this.firstName = firstName;
 this.lastName = lastName;
 this.address = address;
 this.username = username;
 }
 
 // The new constructor method
 public Person(String firstName, String lastName, String address)
 {
 this.firstName = firstName;
 this.lastName = lastName;
 this.address = address;
 this.username = "";
 }
 
 // A method to display the state of the object to the screen
 public void displayPersonDetails()
 {
 System.out.println("Name: " + firstName + " " + lastName);
 System.out.println("Address: " + address);
 System.out.println("Username: " + username);
 }
 } 

请注意,第二个构造函数方法也称为“ Person”,并且它也不返回值。 它与第一个构造函数方法之间的唯一区别是参数–这次它仅需要三个字符串值:firstName,lastName和address。

现在,我们可以通过两种不同的方式创建Person对象:

 public class PersonExample {
 
 public static void main(String[] args) {
 
 Person dave = new Person("Dave", "Davidson", "12 Main St.", "DDavidson");
 Person jim = new Person("Jim","Davidson", "15 Kings Road");
 dave.displayPersonDetails();
 jim.displayPersonDetails();
 }
 
 } 

将使用名字,姓氏,地址和用户名创建人员戴夫。 但是Person Person不会获得用户名,即用户名将为空字符串:username =“”。

快速回顾

仅当创建对象的新实例时才调用构造方法。 他们:

· ·必须与班级同名

· ·不要返回值

· 可以没有,一个或多个参数

· ·只要每个构造函数方法具有一组不同的参数,就可以编号多个

· ·只要使用“ this”关键字,参数名称就可以与私有字段相同

· ·使用“ new”关键字进行调用

> 喜欢这篇文章的可以点个赞,欢迎大家留言评论,记得关注我,每天持续更新技术干货、职场趣事、海量面试资料等等
> 如果你对java技术很感兴趣也可以交流学习,共同学习进步。
> 不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代

文章写道这里,欢迎完善交流。最后奉上近期整理出来的一套完整的java架构思维导图,分享给大家对照知识点参考学习。有更多JVM、Mysql、Tomcat、Spring Boot、Spring Cloud、Zookeeper、Kafka、RabbitMQ、RockerMQ、Redis、ELK、Git等Java干货

cbbd41343b217ac08213a5408125a537.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值