为了账号安全,请及时绑定邮箱和手机立即绑定

static和private作用域,求解答?

static和private作用域,求解答?

JustWannaHugU 2016-08-08 20:23:28
众所周知,private修饰的成员变量的作用范围是整个类中。而static修饰的变量也是同一个类中生成的对象所共享的。那他俩有什么区别啊?
查看完整描述

2 回答

已采纳
?
阿旭_

TA贡献217条经验 获得超353个赞

static作用域全局(程序运行之初要把所有这个关键字修饰的变量或方法加载在全局中去。)

正常情况:下任何类都可以直接通过类名去掉用。

其它情况:通过private(或其它访问权限)修饰,则只能当前类去访问。例:private static int a = 5;表示变量a在工程运行之后要把所有的static加载一遍,a的空间已经存在且作用域是全局的,但是前面加了一个private,则通过语法访问受限。


查看完整回答
1 反对 回复 2016-08-09
  • JustWannaHugU
    JustWannaHugU
    private修饰的变量不是同一个类中生成的对象所共享的吗?
  • 阿旭_
    阿旭_
    不是,仅仅是加一个语法受限。实际上只要生成实例这个变量就应该是谁都可用的,不过java做了这个语法受限就用不了了。不过如果想用的话可以通过反射的方法一样可以修改和获取private修饰的变量。
  • JustWannaHugU
    JustWannaHugU 回复 阿旭_
    这个全局是啥意思?是public class 主文件名{}这个最外层的类吗?是不是说,全局类可以包含很多其他的内部类,然而static修饰的变量是所有内部类都可以访问的,但是private修饰的变量仅仅是它独自的内部类中可以用呢? 我有点晕。
点击展开后面8
?
XhstormR

TA贡献140条经验 获得超197个赞

private 修饰的属性和方法只能在本类中使用,所以外面的其他类不能使用 private 修饰的东西。


static 修饰的属性和方法被本类的所有对象共享,所以无论你 new 了多少个这个类的对象,都只有这个一个 copy,他们共用这一个用 static 修饰的属性,修改这个属性,其他对象的这个属性也会变。


所以一个是修饰访问范围,一个是属性和方法的特性。一起用就比如

public static void main(String[] args) {
    
}

纯手打,望采纳啊。

查看完整回答
1 反对 回复 2016-08-08
  • JustWannaHugU
    JustWannaHugU
    private修饰的变量不是同一个类中生成的对象所共享的吗?
  • 2 回答
  • 0 关注
  • 1980 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信