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

为什么java没有全局变量

时间:2018-04-04 15:02:54      阅读:430      评论:0      收藏:0      [点我收藏+]

标签:变量   post   log   存在   声明   重复   语言   命名空间   全局   

看一个python写的java,居然写出全局变量了。

 

如果熟练熟悉py oop也能够知道,类里面是没有全局变量的。

类里面的变量就分三种 类属性 实例属性 局部变量  ,类属性 也可以叫静态属性 静态变量 ,实例属性也可以成员变量都差不多的意思。但不存在什么全局变量。

 

为什么有的语言有全局变量?js  py php都有。

在py中如果使用面向过程编程的时候,多个函数操作一个变量,除非频繁的在多个函数中传参和return。否则就需要用到全局变量了,因为函数是在模块级别的命名空间下,那么函数之外写变量只能是模块下面写了,模块之下的变量就叫全局变量。

 

如果是oop编程,方法的命名空间并不是在模块下,而是在类名下,所以只需要把那个本来在面向过程的时候需要写成全局变量的东西,写成实例或者类属性即可。这样在多个方法中都可以访问这个变量。因为oop把命名空间下沉了一级,模块 - 类 -方法 三级,不同于面向过程时候的 模块 -函数 两级。

 

java作为强制oop的语言,一切以类为命名空间,当然就没必要搞个全局变量了。

 

这和我之前所印证的一样,写py时候不要使用全局变量尤其是全局可变变量,和到处声明gloabl,真的是蛋疼,一点oop的意识都没。使用oop完全可以彻底消除全局变量。一直安逸于十几年如一日重复写面向过程的low逼代码不是一件好事。

 

为什么java没有全局变量

标签:变量   post   log   存在   声明   重复   语言   命名空间   全局   

原文地址:https://www.cnblogs.com/ydf0509/p/8716645.html

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