Cod*_*Bad 3 java static-methods
我已经了解到,如果我们希望调用另一个类的静态方法,那么你必须在调用静态方法时编写类名.在下面的程序中,我在Employee_Impl类中创建了Employee类的对象,并使用该对象,我仍然可以访问该count方法.count如果static只使用类名访问方法,为什么它允许我在对象中使用方法?这是否意味着可以使用对象和类名来访问静态方法?
Employee.java
public class Employee{
static int counter = 0;
static int count(){
counter++;
return counter;
}
}
Run Code Online (Sandbox Code Playgroud)
Employee_Impl.java
class Employee_Impl
public static void main(String args[]){
Employee obj = new Employee();
System.out.println(obj.count());
System.out.println(Employee.count());
System.out.println(obj.count());
}
}
Run Code Online (Sandbox Code Playgroud)
output
1
2
3
Run Code Online (Sandbox Code Playgroud)
您可以这样做,因为您创建了一个实例Employee来通过它访问该方法。
静态方法的要点是允许访问可以调用的“实用方法”,而无需实例化新对象的开销。此外,这些方法可以由类的任何实例共享Employee,并且可以改变共享的静态变量或属性。例如,假设所有Employee对象的共享前缀被维护为静态属性:
public class Employee {
private static String EMPLOYEE_IDENTIFIER_PREFIX = "Acme Corporation Employee Number:"
public static void setEmployeeIdentifierPrefix(String prefix){
Employee.EMPLOYEE_IDENTIFIER_PREFIX = prefix;
}
}
Run Code Online (Sandbox Code Playgroud)
如果是通过前缀AcmeCorporation购买的,则可以通过在类上使用 来更新所有对象,如下所示:MultinationalCorporationEmployeesetEmployeeIdentifierPrefixMethod
Employee.setEmployeeIdentifierPrefix("Multinational Corporation Employee Number:");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1287 次 |
| 最近记录: |