静态方法的缺陷

原创 2005年05月08日 22:57:00

静态方法的缺陷

        静态方法的一个常见缺陷是从静态方法中引用每个对象的数据。这将出现问题,因为静态方法没有指向单个对象数据的隐式“this”指针。而且,如果试图从一个静态方法中访问一个实例变量,编译程序不会知道到底需要哪一个对象并将会产生错误信息。典型的错误信息是“Can't make static referenc to non-static variable.”。

        public static voild main(String[] args) {

                     salary = 50000;                     //BZZT! does not work

                     Employee e = new Employee("Fred",50000);

                     e.salary = 50000;                //WORKS fine.

        如果需要在静态方法中引用实例(每个对象的)数据和方法,一种做法是在静态方法中声明和实例化一个对象,然后就可以访问这个实例的数据和方法了。

        前面已经说过,并不是真正地保持实例方法的每个实例副本。那么,静态方法的用途是什么呢?当方法所做的处理只与整个类有关,而且并不特别针对一个实例时,则应把这个方法声明为静态的。java.lang.String类有若干个valueOf()方法,他们均接受一个基本类型(布尔和整数等)参数,然后把参数值作为String返回。这些方法都是静态的,因此无需要使用字符串实例就可以调用它们,示例如下:

              String s = String.valueOf(123.45);           //OK

        javalang.Math 包中的方法都是静态方法,如abc()、sin()、cos()和exp()等。只需如下所示的那样调用它们即可:

              double d = Math.abs(-12.0);

        最后,程序的开始执行位置main()方法也是静态的。如果不是,则在调用它之前,需要先创建实例,如同在applet和Servlet中所做的那样。

EXT dojochina Ext类静态方法.rar

  • 2010年03月09日 12:30
  • 2KB
  • 下载

程序设计之---单例模式VS静态方法

2>静态类和singleton之间的区别 : ① static类有更好的访问效率(Static class provides better performance than Singleton pa...

Java中的Static块与静态方法

  • 2012年06月01日 17:14
  • 2KB
  • 下载

php伪静态方法

  • 2014年03月08日 16:52
  • 1KB
  • 下载

es6 javascript的class的静态方法、属性和实例属性

类相当于实例的原型, 所有在类中定义的方法, 都会被实例继承。 如果在一个方法前, 加上static关键字, 就表示该方法不会被实例继承, 而是直接通过类来调用, 这就称为“ 静态方法”。 clas...

OGNL静态方法定义

  • 2011年07月19日 16:52
  • 102KB
  • 下载

多线程与静态方法及其中的局部变量关系

static 方法 方法在该方法所属类型第一次被使用的时候加载、在该类型所在应用程序域卸载的时候卸载、也就是说 static 方法只加载一次、除非整个Domain 被卸载了。而实例方法(非静态方法),...

mfc界面贴图的动静态方法

  • 2015年01月23日 12:27
  • 45.59MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:静态方法的缺陷
举报原因:
原因补充:

(最多只允许输入30个字)