问题描述
|
我知道静态类型和其他类型之间的区别,但是我不确定在哪里使用哪个类型。现在,我在所有地方都使用静态类型来避免对象实例化。这样使用是个好主意吗?在所有地方都使用静态类型有什么特别的缺点吗?
编辑
您如何称呼它为“ 0”?
解决方法
这是一个很好的问题。通常,除非您确定它是正确的应用程序,否则不应该使用
static
方法/变量。在面向对象编程(OOP)中,对象封装数据和行为。通常,* instance方法用于操纵对象的数据。
“ 2”方法/变量仅应用于与任何特定对象无关的功能。有效申请ѭ1的一个好例子是ѭ4。
有关实例和静态方法/变量的一些说明:
实例变量可以访问静态变量和实例变量/方法,但是静态方法只能访问其他静态变量/方法。
在类的所有实例之间,静态变量将始终相同。
一本涵盖该主题的好书是Robert Martin撰写的Clean Code。强烈推荐。
*实例方法与静态方法相反。它们与类实例关联,而不是与类本身关联。
处理您的修改(假设这是一个变量),您可以像这样访问它:
MyClass.staff = \"bob,george,and linda\";
System.out.println(MyClass.staff);
编辑:这是我不久前在另一个论坛上发表的帖子,有一些很好的答案。这是一个PHP论坛,但是概念仍然适用。
http://forums.devnetwork.net/viewtopic.php?f=1&t=127667
,当一个对象有多个实例时,静态类型的变量和函数将在所有实例之间共享。
,任何应用程序中的大多数逻辑都将被模块化,并将在某些共享字段上运行。这就是为什么大多数方法都是非静态的原因。在这种情况下,“字段”可以与“名字”等基本相同。但是在其他情况下,“字段”是其他类的实例,例如DataAccess(DAO)类。
变量(即字段)几乎永远不能是静态的,除非它们是''constants \'。
可以使用静态方法的一个很好的例子是转换字符串的类,例如:
public class StringUtil{
public static String convertToHex(String orig){
}
}