zoukankan      html  css  js  c++  java
  • 201671010145 20162017《Java程序设计》静态域与静态方法

    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类对象的引用调用这个方法。

  • 相关阅读:
    《痕迹识人,面试读心》培训总结之一
    傲游与视频网站广告之战的思考
    EMLS项目推进思考
    二级证丢失如何找回
    Mathematica 讲座
    泊松方程解法
    Windows核心编程-作业
    Win7多用户同时登陆
    C语言文件操作类型速查
    openMP的一点使用经验
  • 原文地址:https://www.cnblogs.com/1996zq/p/7538367.html
Copyright © 2011-2022 走看看