package test;
public class StaticTest {
public static void main(String[] args) {
// fill the staff array with three Employee objects
Employee[] staff = new Employee[3];
staff[0] = new Employee("Tom",40000);
staff[1] = new Employee("Dick",50000);
staff[2] = new Employee("Harry",60000);
// print out information about all employee objects
for (int i = 0; i < staff.length; i++)
{
Employee e = staff[i];
e.setId();
System.out.println("name=" + e.getName() + ", id=" + e.getId() +
", salary=" + e.getSalary());
}
int n = Employee.getNextId();
System.out.println("Next available id=" + n);
}
}
class Employee
{
private String name;
private double salary;
private int id;
//静态字段属于这个类,而不属于单个的对象。类的对象共享这个静态字段。
private static int nextId = 1;
public Employee(String n,double s){
name = n;
salary =s;
id = 0;
}
public String getName()
{
return name;
}
public void setName(String name){
this.name = name;
}
public double getSalary(){
return salary;
}
public void setSalary(double salary){
this.salary = salary;
}
public int getId(){
return id;
}
public void setId()
{
// set id to next avilable id
id = nextId;
nextId++;
}
//静态方法是不向对象施加操作的方法,不能访问实例字段,只能访问类自身中的静态字段。
public static int getNextId()
{
return nextId; //return static field
}
public static void main(String[] args){
Employee e = new Employee("Harry",50000);
System.out.println(e.getName() + "\t" + e.getSalary());
}
}
运行结果:
name=Tom, id=1, salary=40000.0
name=Dick, id=2, salary=50000.0
name=Harry, id=3, salary=60000.0
Next available id=4
分享到:
相关推荐
最后,静态字段和非静态字段是类中存储数据的两种方式。静态字段是类级别的,所有类的实例共享同一个静态字段的值,可以通过类名直接访问。它们适用于存储那些与类相关而不是与特定对象相关的数据,例如计数器或者...
java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...
- 在设计类和方法时,应根据方法的实际需求选择合适的修饰符。 - 尽量减少静态方法的使用,因为它们会增加代码之间的耦合度,不利于代码的维护和扩展。 - 如果一个方法不依赖于实例状态,那么考虑将其声明为静态方法...
在这个例子中,`SharedValue` 是一个静态字段,可以被 `IncrementShared` 和 `DecrementShared` 方法所访问和修改,无论创建多少个 `MyClass` 的实例,`SharedValue` 的值都是共享的。 静态字段常用于计数器、全局...
首先,静态类(Static Class)是不能被实例化的,它们只能包含静态成员,如静态方法和静态字段。创建静态类的主要目的是为了提供全局唯一的共享资源或服务,例如`System.Math`类提供了各种数学计算函数。静态类在...
java编程思想-初始化与清理了解this之后,你就能更全面地理解“静态...Java中禁止使用全局函数,但你在类中置入静态方法就可以访问其它静态方法和静态字段。 有些人认为静态方法不是“面向对象”的,因为它们的确具
它们不能访问类的实例成员(非静态字段和方法),但可以访问静态成员。静态方法通常用于执行不依赖于特定对象状态的操作,例如计算、工具方法等。 在C#中使用静态方法的注意事项: 1. 静态方法不能访问实例成员。 2...
在Java编程中,反射是一种强大的工具,它允许我们在运行时检查和操作类、接口、字段以及方法等对象。本文将详细讲解如何通过反射调用静态方法,并探讨在特定场景下,如MyBatis中的应用。 首先,理解反射的概念是至...
6. **静态方法调用实例成员**:静态方法可以直接调用类的静态字段,但不能直接访问实例字段,因为它们没有对象上下文。如果需要访问实例字段,通常需要通过传递对象实例作为参数。 7. **多态(Polymorphism)**:...
在编程领域,尤其是在Java、C#、ASP.NET和JavaScript这些语言中,理解“非静态字段,方法或属性需要对象引用”这一概念至关重要。这涉及到类的实例化和成员的访问方式。 首先,让我们来解释一下“类型”和“实例”...
C#的类中可以包含两种方法:静态方法和非静态方法。 使用了static 修饰符的方法为静态方法,反之则是非静态方法。 静态方法是一种 特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不...
对于静态字段和属性的访问,开发者常常担忧反射的性能影响,但实际情况可能并不像人们想象的那样严重。这篇文档将深入探讨在.NET 5中如何使用反射获取静态字段和属性,并分析其性能表现。 首先,我们要理解反射的...
如果一个方法不需要访问类的实例变量(非静态字段)或者调用其他非静态方法,那么这个方法可以考虑声明为静态。这样做可以节省内存,因为不需要为每个实例创建方法副本。但是,如果一个方法需要访问实例变量或依赖于...
- 定义:抽象类是不能实例化的类,它通常作为其他类的基类,提供公共属性和方法。 - 访问修饰符:与普通类相似,但通常会声明为`abstract`以指示其抽象性质。 - 抽象方法:可以包含抽象方法,这些方法没有具体...
9. 静态方法和静态字段的访问:反射也可以调用静态方法和访问静态字段,分别使用`Method.invoke(null, params)`和`Field.get(null)`。 10. 异常处理:反射操作可能会抛出`IllegalAccessException`、`...
"静态与非静态.cs"可能解释了何时使用静态类、静态方法和静态字段,以及它们与非静态成员的区别。 8. **打印三角形(Printing Triangle)**: - 这可能是一个基础的编程练习,用于展示循环和字符串操作。"打印...
这种方法不仅避免了潜在的警告和错误,还保持了静态变量的功能,确保了代码的健壮性和灵活性。 总之,理解`@Value`注解的工作原理以及如何正确地使用它对于编写高质量的Spring应用程序至关重要。希望本文能够帮助...
然而,这也意味着静态方法不能访问类的实例字段(非静态字段),因为它们在没有实例的情况下无法与特定的对象状态关联。此外,由于静态方法在程序启动时就加载到内存,如果程序中有大量静态方法,可能会占用更多内存...
可以在非静态类中定义静态成员,可以通过类名访问静态方法和静态字段,但不能通过对象名访问静态方法。选项d) 通过类的实例对象访问该类的静态成员是错误的,因为静态成员不是与特定实例关联的。 5. 方法重载:方法...
3. **静态调用.txt**:静态成员在C#中的使用,包括静态方法和静态字段的调用方式和它们在整个类生命周期中的作用。 4. **静态变量用同一地址.txt**:静态变量的特性,即所有实例共享同一个静态变量,无论创建多少个...