为什么在java中的构造函数之外指定对象属性?在构造函数中指定属性不是更方便吗?
答案 0 :(得分:3)
它的可见度。属性在构造函数之外声明,因此它们可以在类中可见。但是它们在构造函数中初始化。
答案 1 :(得分:1)
在构造函数外声明的属性成为该类的instance variables
,并且它们可以拥有自己的对象值,并且可以在类中的任何位置使用。
在构造函数中声明的属性不会是类的属性,它们只是local variables
,只能在该构造函数中使用。
更多的是关于可用性而非便利性。
答案 2 :(得分:0)
我认为当class有默认构造函数和一组三元组时,你会询问bean约定:property,setter和getter。
这种模式是多年前发明的。它的优点是能够通过反射使用通用方式初始化对象。例如,动态地将XML标记或JSON属性映射到java bean属性。
但这不是唯一的设计范例。您可以通过构造函数设置所有数据。此外,在这种情况下,您可以使类 immutable 在多线程环境中为您提供许多优势。
但是当类具有很多属性时,使用基于构造函数的初始化并不是很方便。特别是如果它们中的一些具有默认值。 Builder模式可以帮助解决这个问题。
请不要犹豫,提出更具体的问题。