Topic: 关于成员变量访问控制的问题(protect 、default)

  Print this page

1.关于成员变量访问控制的问题(protect 、default) Copy to clipboard
Posted by: 笨笨猪
Posted on: 2008-05-27 16:11

//AccessVar.java中变量访问权限的问题
class PrivateVar
{
private int var1 = 10;
int var2 = 20;
public int getVar1()
{
return var1;
}
public int getVar2()
{
return var2;
}

}
class PublicVar extends PrivateVar
{
public int var3 = 30;
var2 = var2 + 1000 ;
/*public void addVar2()
{
var2 = var2 + 5;
} */

}
为什么上面的程序中注释的部分可以对var2直接引用,而var2 = var2 + 1000 ;却不可以呢?
//UseAcessVar如下

public class UseAcessVar
{
public static void main( String args[])
{
PrivateVar privateVar = new PrivateVar();
PublicVar publicVar = new PublicVar();
System.out.println("privateVar 变量 var1 ="
+(privateVar.getVar1()+3));
System.out.println("privateVar 变量 var2 ="
+privateVar.getVar2());
//System.out.println("publicVar 变量 var3 = "
// +publicVar.var3);
System.out.println("publicVar 变量 var1 = "
+publicVar.getVar1());
publicVar.addVar2();
System.out.println("publicVar 变量 var2 = "
+publicVar.getVar2());
}
}

2.Re:关于成员变量访问控制的问题(protect 、default) [Re: 笨笨猪] Copy to clipboard
Posted by: Joffeec
Posted on: 2008-05-27 18:44

在PrivateVar类中var2的访问权限没有说明
而在java中的默认访问权限并不是private(这跟C++不同)
应该是protected,你可以在同一个包的任何一个类访问到它的。

PublicVar 类继承了PrivateVar
所以在PublicVar类中的方法addVar2()可以访问到var2
而要改变var的值(var2 = var2 +1000)只能在方法里面
要不然得把var2 = var2 + 1000改为
int var4 = var2 + 1000;
就可以

3.Re:关于成员变量访问控制的问题(protect 、default) [Re: 笨笨猪] Copy to clipboard
Posted by: 笨笨猪
Posted on: 2008-05-30 09:41

万分感谢!!!

4.Re:关于成员变量访问控制的问题(protect 、default) [Re: 笨笨猪] Copy to clipboard
Posted by: 笨笨猪
Posted on: 2008-05-30 09:43

万分感谢!!!

5.Re:关于成员变量访问控制的问题(protect 、default) [Re: Joffeec] Copy to clipboard
Posted by: JiafanZhou
Posted on: 2008-05-30 16:12

Joffeec wrote:
在PrivateVar类中var2的访问权限没有说明
而在java中的默认访问权限并不是private(这跟C++不同)
应该是protected,你可以在同一个包的任何一个类访问到它的。

这个是错的,默认的访问权限不是protected,而是package. package不类似protected可以在子类有访问权限。

6.Re:关于成员变量访问控制的问题(protect 、default) [Re: HenryShanley] Copy to clipboard
Posted by: Joffeec
Posted on: 2008-06-29 15:58

HenryShanley wrote:
这个是错的,默认的访问权限不是protected,而是package. package不类似protected可以在子类有访问权限。


谢谢版主!!我是在阅读到你对”关于Java里变量的访问权限问题 “http://www.cjsdn.net/post/view?bid=1&id=191443&sty=1&tpg=9&age=0的回复时才想起我好像在这里的回复错了,就赶紧回来修改,希望不会误导楼主……没有想到我回头来看时版主已经帮我指出错误了。。再次谢谢版主!!!

7.Re:关于成员变量访问控制的问题(protect 、default) [Re: 笨笨猪] Copy to clipboard
Posted by: JiafanZhou
Posted on: 2008-06-30 15:36

No problem at all.


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923