通过优锐课的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](https://i-blog.csdnimg.cn/blog_migrate/50c68e43f6b51bbd7aead69c5089cc77.jpeg)