首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java为什么要设计静态方法?

java为什么要设计静态方法?

前段时间还和同事讨论过这样的问题,讨论的结果是不能在main方法下print类似于关键字this,可见在静态方法中调用this是行不通的。使用this是为了声明一个类的对象,含义是“这个对象”。但静态方法是属于某个类,并非属于某一对象。这就是题主所提到的main函数的方法必须是静态的。当然,如果仅仅认为是为了满足main函数或者说什么加载类机制,这样可能并不完全准确。

main既是一个Java的函数,也是一个接口,只不过对于开发者而言,main这个接口意义不大,在某种程度上,它是为用户提供便利的,用户在熟悉接口的情况下,即使对程序内部的代码实现不熟悉,也不影响其使用。但试想,如果main函数的方法是动态的,那就先得创建对象,但是然后呢?可能就没有然后了。

一句话:静态方法是类,而非对象,调用它是无需先实例化的!

初学编程语言,老师肯定会讲到main方法,与C或C++不同,main不需要返回什么值,与此同时,它有一套严格的语法规范:

public static void main(String... args)

static为静态,指main方法为静态,在虚拟机调用该方法的时候无需创建相关的包含main方法的实例,如果main方法是非静态的,那么jvm在调用main方法的时候就需要创建实例,因为main方法不唯一,于是无法判断需要调用那个main方法,这样只能导致程序错误;除此之外还有一个原因就是像main这样的静态方法加载到内存以后,jvm可以直接调用,无需创建实例即可执行。

还需要提到的一点就是在Java中,静态方法对应工具类,非静态方法对应对象,这也是Java区别于C的地方,毕竟C不需要面向对象;Python也有静态方法的工具,但Python就不建议过多的使用静态方法,但Python的静态方法能够被类和实例来访问。不过,如果非静态方法使用得过多,那么相比于静态方法的而言,代码量大,运行效率低。所以,Java这样设计,也是为了能够在开发的过程中,代码更加的规范!

看到有知友提到单例模式,这也是一个原因,用java开发软件,单例模式可以确保系统中,一个类对应一个对象实例,这样的设计模式较为简单,在设计模式中,工厂模式也可以对实例化进行限制。这种方法在系统开发中也常用,就是排队执行某一任务的情况。比如一个电视广告系统,可以有多个文件等待,但只有一个文件处于播放状态。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190104A0RYTB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券