社区
Java SE
帖子详情
关于私有变量的一个问题没有明白,谁能解答一下
dongdandan
2007-04-25 09:43:12
class Test1
{
private int i=8;
public static void main(String[] args)
{
Test1 a=new Test1();
System.out.println(a.i);
}
}
对于一个类的私有变量,只能在类内部使用,并且对于实例属性不可以在static上下文中引用。
为什么这个例题没有问题,而把main方法写到另一个类里就不可以,我想知道这其中的原因,理由。
...全文
390
14
打赏
收藏
关于私有变量的一个问题没有明白,谁能解答一下
class Test1 { private int i=8; public static void main(String[] args) { Test1 a=new Test1(); System.out.println(a.i); } } 对于一个类的私有变量,只能在类内部使用,并且对于实例属性不可以在static上下文中引用。 为什么这个例题没有问题,而把main方法写到另一个类里就不可以,我想知道这其中的原因,理由。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gongyali2005
2007-04-26
打赏
举报
回复
对于Test1里的所有方法.i是可见的.
stevenzxl
2007-04-26
打赏
举报
回复
(对于一个类的私有变量,只能在类内部使用,)这点是没错的,(并且对于实例属性不可以在static上下文中引用。)这点我就不太认同了,main方法也是一种方法啊,它当然可以调用本类中的私有属性了,如果它都不能调用了,那可麻烦了!
(为什么这个例题没有问题,而把main方法写到另一个类里就不可以,)当然不行啊,私有属性只有本类中可以调用,如果其他类的main方法可以调用别的类的私用属性,那java的安全性,封装性就没了。
jimmyjimmy
2007-04-26
打赏
举报
回复
对与私有变量的使用应该通过方法来实现 才能达到变量的私有
约翰羊
2007-04-26
打赏
举报
回复
学习
alex_lu
2007-04-26
打赏
举报
回复
MARK
jiqimiao
2007-04-26
打赏
举报
回复
其实main方法是一个程序的切入点,一个程序运行首先寻找有没有main方法,所以他是static的,这是固定的。对于楼主的这个例子来说不涉及真正意义上的static,私有的属性只有类内部能访问,所以如果蒋main放入到另一个类中就不能访问私有的属性了
maquan
2007-04-26
打赏
举报
回复
> 对于一个类的私有变量,只能在类内部使用,
> 并且对于实例属性不可以在static上下文中引用。
> 为什么这个例题没有问题
> 而把main方法写到另一个类里就不可以,我想知道这其中的原因,理由。
首先,楼主这个例子,并没有违背“对于一个类的私有变量,只能在类内部使用”,因为它就是在自己这个类内部的代码里来访问的。
其次,也没有违背“对于实例属性不可以在static上下文中引用”,因为,对 i 的访问是通过一个实例对象 a 进行的,虽然语句是写在一个 static 方法内部,但这并不是“static上下文”。
最后,如果把这段代码写到另一个类里,显然就违背了第一条。
lower0661
2007-04-26
打赏
举报
回复
1.main方法也只是一个方法,除了可以作为默认的程序入口之外,与其他方法并没有区别。
它放在哪个类中,就属于那个类的一部分。因此也和该类的其他方法一样,可以访问该类的私有变量。所以你把一个方法(这里就是main方法)拿到类的外面,他当然就访问不到私有变量了。
2.实例属性不可以在static上下文中引用。
static部分是在类的初始化期间(介于加载和实例化之间)执行。(前几天有一个贴子讨论过)
。也就是说有main方法的时候,实例变量还没有出生呢~那让这个方法到哪里去找这个变量呢?
For_suzhen
2007-04-26
打赏
举报
回复
学习
lilifb
2007-04-25
打赏
举报
回复
1. main是属于Test1的,所以i对main不会隐藏,是可见的。
2. “实例属性不可以在static上下文中引用”这个说法不准确,应该是“不能直接引用”,但可以通过创建当前类的实例来引用。这里的a是Test1的一个实例,通过a来引用i,没有问题。
回答的不错
网络咖啡
2007-04-25
打赏
举报
回复
关注
brooksychen
2007-04-25
打赏
举报
回复
楼上说的没错。
楼主的这段代码语法上没有问题,但不推荐这样做。本来一个成员变量设为private就是为了安全,不让类外面的代码访问,如果想访问的话,一般会定义一个public的set方法返回这个值。此例中虽然main方法可以访问到i,但也正如楼主所言,只能在这个类里面访问;由于main只是一个程序的入口,假如main函数在其他类里面,原来的代码就有问题了。
Dan1980
2007-04-25
打赏
举报
回复
1. main是属于Test1的,所以i对main不会隐藏,是可见的。
2. “实例属性不可以在static上下文中引用”这个说法不准确,应该是“不能直接引用”,但可以通过创建当前类的实例来引用。这里的a是Test1的一个实例,通过a来引用i,没有问题。
adverse
2007-04-25
打赏
举报
回复
public static void main被认为是Test1的公有方法,所以在它自己的方法里面是可以访问到的。
一个
变量
生命周期的
问题
一个
变量
生命周期的
问题
Python基础教程:
私有
变量
的访问和赋值教程,腾讯笔试面试
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。基本上主流的和经典的都有,这里我就不放图了,版权
问题
,个人看看是
没有
问题
的。
Unity如何同时调用另
一个
脚本的函数和
变量
之前用脚本调用另
一个
脚本的
变量
我都是用简单的static
变量
来解决的,但是今天看unity官方教程的时候发现可以同时调用 另
一个
脚本的函数和
变量
。自己尝试运行了
一下
,可是报错了。好尴尬 ̄□ ̄|| 官方的代码是这样的: void Start () { alpha = 29; myOtherclass = new otherAccess(); ...
【
问题
解答
】用数组模拟单链表
但是y总并
没有
区分这个概念,所以删除头结点就是删除链表的第
一个
有值的结点,head指向ne[head]是因为head本来就指向它的下
一个
结点,所以ne[head]就是头结点的下
一个
结点。题目里要将x插入到第k个插入的数后面,第k个插入的数下标是k - 1,所以调用的时候是add(k - 1, x),remove(k-1)。上述就是本节我所遇到的和参考大家的
问题
解答
所总结的,对于像我这样的新手来说,反复的去查看评论
解答
很费时间,因此我再这里大概总结了大家的
问题
,并归纳了大家的解释,希望能够帮助到大家。
关于约瑟夫
问题
的数学
解答
。
约瑟夫
问题
的数学
解答
: 假设一组n个数的序号为:1、2、3...n令f(n,i)=x 为第i号的数为x令k为每次淘汰的序号 那么我们可以知道对于上面组可以转换为注意:if((k=k%n)==0)k=n.k+1、k+2...n、1、2...k-1、k(已经被踢掉) 这组对应的序号我们可以找到1、2...n-k、n-k+1、n-k+2...n-1
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章