1静态可以修饰:成员变量和成员函数。
什么时候定义静态变量(类变量):
当对象中出现数据共享时,该数据被静态所修饰。
对象中的特有数据要定义成非静态,存在于堆内存中。
什么时候定义静态函数:
当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。
eg:
class Person
{
String name;
public void show(){
// 这中间没有使用name,则此函数show()可以定义成static,,,,
}
}
2 每一个应用程序都有共性的功能,可以将这些功能进行抽象,独立封装,以便复用。
eg:
class ArrayTool{
public void getMax(){
}
public void getMin(){
}
}
class ArrayToolDemo{
ArrayTool arrayTool = new ArrayTool();
arrayTool.getMax();
}
虽然通过建立ArrayTool的对象使用这些工具方法,对数组进行操作,但是发现了问题:
1 对象是用于封装数据的,可以ArrayTool对象并未封装特有数据。
2 操作数组的每一个方法都没有用到ArrayTool对象的特有数据。
如何让程序严谨?
1 所以,这是可以考虑,让程序更严谨(这个程序是不需要ArrayTool对象的),可以将ArrayTool中的方法定义成static,直接通过类名调用即可。
2 同时,将方法都静态后,可以方便使用,但是该类还是可以被其他程序建立对象的(即 ArrayTool arrayTool = new ArrayTool()是合法的),为了更为严谨,强制让类不能建立对象,可以通过将构造函数私有化完成。