我只是在阅读教科书中给我的文字,我不太确定我是否理解它在说什么。它基本上告诉我静态方法或类方法包含“修饰符”关键字 static。但我实在不知道这意味着什么?
有人可以用非常简单的术语向我解释什么是静态方法或类方法吗?
另外,我能简单解释一下什么是实例方法吗?
这是他们在课本上给我的:
static 修饰符的存在或不存在具有重要的实际意义。一旦Java处理了它所属类的定义,公共类方法就可以被调用和执行。实例方法的情况并非如此。在调用和执行公共实例方法之前,必须创建它所属类的实例。要使用公共类方法,您只需要该类。另一方面,在使用公共实例方法之前,您必须拥有该类的实例。
在另一个方法的定义中调用静态方法的方式根据这两个方法是否属于同一类而有所不同。在上面的示例中,factorial 和 main 都是 MainClass 类的方法。因此,在 main 定义中调用 Factorial 只是引用方法名称“factorial”。
Java 的基本范例是编写类,然后实例化这些类。实例化对象(类的实例)具有与其关联的属性(成员变量),这些属性影响其行为;当实例执行其方法时,它将引用这些变量。
然而,特定类型的所有对象可能具有完全不依赖于成员变量的行为;这些方法最好是静态的。由于是静态的,不需要类的实例来运行该方法。
您可以这样做来执行静态方法:
MyClass.staticMethod(); // Simply refers to the class's static code
但要执行非静态方法,您必须这样做:
MyClass obj = new MyClass(); //Create an instance
obj.nonstaticMethod(); // Refer to the instance's class's code
在更深的层次上,编译器将一个类放在一起时,会收集指向方法的指针并将它们附加到该类。当执行这些方法时,它会跟随指针并执行远端的代码。如果实例化一个类,则创建的对象包含一个指向“虚拟方法表”的指针,该指针指向继承层次结构中该特定类要调用的方法。但是,如果该方法是静态的,则不需要“虚拟方法表”:对该方法的所有调用都会转到内存中完全相同的位置来执行完全相同的代码。因此,在高性能系统中,如果不依赖实例变量,最好使用静态方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)