java中关于访问权限的老问题

话不多说直接上图上代码
public class Tom {

private int x = 120;
private int y = 20;
int z = 11;
private void f() {
x = 200;
System.out.println(x);
}
void g() {
x = 200;
System.out.println(x);
}

public static void main(String[] args) {
Tom tom = new Tom();
tom.x = 22;//代码1
tom.y = 33;//代码2
tom.z = 55;//代码3
tom.f();//代码4
tom.g();//代码5
}
}

题目是代码1~5那有错
可是实际操作中并没有什么错误啊
是不是我搞错什么了
求大神解答。。。
就是书上的这道题啦

是没错误啊~~

追问

看我补充的。。。他应该有错才对啊
答案也是说有错误的

追答

现在看到你的main方法是另一个类中的啊?就是说同包不同类的了,,
所以代码1,代码2,代码4都是错的~~
因为他们都是私有的【就是private的】,由图可以看到私有的只在本类里面可用~~
=======-========
你图上的private int y = 20;是protected的,就是说也是可以的,所以1与4是错的。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-03
private不是只有本类可见吗
既然main函数不是Tom类就不能使用到Tom类中的x,y、f()
请记住:是本类,不是本实例,所以只要是类里面的方法就可以访问!追问

也就是说Tom类中的x,y,f()都不可以在A类中使用,是不,那答案是1、2、4咯?

第2个回答  2013-10-03
大哥,您是新手吗!!!!!!!!!!!!!!
private再去了解下这个单词的含义!!!!!!!!!
顺便说下,main函数算一个单独的类,不属于你的Tom类,可以这么理解先,以后一定要再去详细了解追问

private不是只有本类可见吗
既然main函数不是Tom类就不能使用到Tom类中的x,y、f()

可为什么不报错呢
我是新手,求大神关照

追答

好吧,貌似我错了,你看下这个:http://zhidao.baidu.com/link?url=AiRsHT_Pf9-lwVjWBsC_B1EH0Mg_4BchMW8J4_YXk0kp5CRojU3PDxj9oGuge2sB8UCAG0VI78kru4YH8T-fv_
thereisyougo的回答,中间那条
但是这道题肯定是错的,你仔细看下你的题和你写的,main在A类里肯定调去不到B的private
但是貌似B的main可以调去自己的private
你这样写虽然感觉简单,但两个不是一个概念

第3个回答  2013-10-03
兄弟 , 看清楚题目, 上面是两个类 Tom 和 A类 , private 属性只能在类内部进行访问,书上是类A中对tom对象的private属性进行访问当然有错了, 所以代码1 代码2和代码4都是有错误的,而你测试将两个类合成一个类写当然不会报错啦
第4个回答  2013-10-04

这程序本来就是举个private的例子.private是私有的.是不能被修改的.一修改就会报错


相似回答