码迷,mamicode.com
首页 > 编程语言 > 详细

201671010145 2016-2017《Java程序设计》静态域与静态方法

时间:2017-09-17 23:30:47      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:程序设计   需要   ret   关键字   class   通过   静态变量   声明   调用   

1.静态域

  如果将域定义为static,那么每个类中只有一个这样的域。而每一个对象对于所有的实例域却都有自己的一份拷贝。例如,假定需要给每一个雇员赋予唯一的表示码。这里给Employee类添加一个实例域id和一个静态域nextld:

 class Employee

 {

     private int id;

     private static int nextId=1;

 }

现在,每一个雇员对象都有一个自己的id域,但这个类的所有实例将共享一个nextid域,换句话说,如果有1000个Employee类的对象,则有1000个实例域id,但是只有一个静态域nextid,即使没有一个雇员对象,静态域nextil也存在,他属于类,而不属于任何独立的对象。

 下面来实现一个简单的方法:

   public  void  setId()

       id= nextId;

       nextId++;

  }

假设为harry设定雇员标识码:

harry.setId();

那么harry的id域被设置,并且静态域nextId的值加1:

hurry.id= . . .;

Employee.nextId++;

2.静态常量

   静态变量使用的比较少,但是静态常量却使用的比较多,例如,在Math类中定义了一个静态常量:

  public class Math

{

public  static final double PI=3.14159265358979323846;

}

在程序中通过Math.PI来访问这个常量

   如果关键字static被省略,PI就成了Math类的一个实例域,即需要用Math类的对向来访问PI,并且每一个Math对象都有他自己的一份PI拷贝。

  已经使用多次的另一个静态常量是System.out,他在System类中声明:

  public  class  System

     public  static  final  PrintStream  out= ...;

 }

 

3.静态方法:

 静态方法是不能想对象实施操作的方法。例如,Math类的pow方法就是一个静态方法。表达式计算幂,他在运行的时候,不使用任何Math对象,换句话,没有隐式的参数。

   可以认为静态方法不能操作对象,所以不能在静态方法中访问实例域。但是,静态方法可以访问自身类中的静态域。下面例子:

public  static int getNextId()

  return nextId;

 }

可以通过类名调用这个方法:

 int n=Employee.getNextId();

这个方法可以省略static,但是需要通过Employee类对象的引用调用这个方法。

201671010145 2016-2017《Java程序设计》静态域与静态方法

标签:程序设计   需要   ret   关键字   class   通过   静态变量   声明   调用   

原文地址:http://www.cnblogs.com/1996zq/p/7538367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!