调用方式
静态方法: "类名.方法名","对象名.方法名";静态方法无需创建对象就可以使用;
实例方法: "对象名.方法名";实例方法必须创建对象才可以使用;
举例:
public class Case {
public static void testStatic() {
System.out.println("This is static method");
}
public void testInstance() {
System.out.println("This is instance method");
}
public static void main(String[] args) {
Case.testStatic(); // 调用静态方法
Case instance = new Case();
instance.testInstance(); // 调用实例化方法
instance.testStatic(); // 利用对象来调用静态方法
}
}
操作成员
静态方法: 只允许访问静态成员(静态变量和静态方法)而不允许访问实例成员(实例变量和实例方法);
不能以任何方式引用this或super;
如果不需要操作变量的时候,完全可以改成静态的;
实例方法:可以访问静态成员或实例成员;
举例:
public class Case {
private static int static_value; // 定义一个静态成员变量
private int instance_value; // 定义一个实例成员变量
/*
* 定义一个静态方法
*/
static void staticMethod() {
int i = 0; // 正确,可以有自己的局部变量;
otherStaticMethod(); // 正确,可以调用静态方法
instance_value = 20; // 错误,不能使用实例变量
insMethod(); // 错误,不能调用实例方法
}
static void otherStaticMethod() {
}
/*
* 定义一个实例方法
*/
void instanceMethod() {
int i = 0; // 正确,可以有自己的局部变量
static_value = 15; // 正确,可以使用静态变量
instance_value = 30; // 正确,可以使用实例变量
staticMethod(); // 正确,可以调用静态方法
}
静态方法: "类名.方法名","对象名.方法名";静态方法无需创建对象就可以使用;
实例方法: "对象名.方法名";实例方法必须创建对象才可以使用;
举例:
public class Case {
public static void testStatic() {
System.out.println("This is static method");
}
public void testInstance() {
System.out.println("This is instance method");
}
public static void main(String[] args) {
Case.testStatic(); // 调用静态方法
Case instance = new Case();
instance.testInstance(); // 调用实例化方法
instance.testStatic(); // 利用对象来调用静态方法
}
}
操作成员
静态方法: 只允许访问静态成员(静态变量和静态方法)而不允许访问实例成员(实例变量和实例方法);
不能以任何方式引用this或super;
如果不需要操作变量的时候,完全可以改成静态的;
实例方法:可以访问静态成员或实例成员;
举例:
public class Case {
private static int static_value; // 定义一个静态成员变量
private int instance_value; // 定义一个实例成员变量
/*
* 定义一个静态方法
*/
static void staticMethod() {
int i = 0; // 正确,可以有自己的局部变量;
otherStaticMethod(); // 正确,可以调用静态方法
instance_value = 20; // 错误,不能使用实例变量
insMethod(); // 错误,不能调用实例方法
}
static void otherStaticMethod() {
}
/*
* 定义一个实例方法
*/
void instanceMethod() {
int i = 0; // 正确,可以有自己的局部变量
static_value = 15; // 正确,可以使用静态变量
instance_value = 30; // 正确,可以使用实例变量
staticMethod(); // 正确,可以调用静态方法
}
}
如果一个方法与他所在类的实例对象无关,那么它就应该是静态的,而不应该把它写成实例方法;
所以所有的实例方法都与实例有关,既然与实例有关,那么创建实例就是必然的步骤;
从面向对象的角度上来说,在抉择使用实例化方法或静态方法时,应该根据是否该方法和实例化对象具有逻辑上的相关性,如果是就应该使用实例化方法反之使用静态方法;
实例方法: 侧重于实例内部的状态;
静态方法: 侧重处理实例间的关系或集合;