关于java 的缺省修饰符friendly

xuxichun 2008-03-31 10:04:44
看java相关的书籍说:java缺省的修饰符是friendly,就是同一个包内可以访问。
但是我写了段测试代码,却不对,大家帮忙分析下。

A.java
package a;

public class A {

private static int a = 1;
}

B.java
package a;

class B
{

public void run() {
// TODO Auto-generated method stub
System.out.print("a =" +a);//错误,编译器说a无法解析
}

}

问:a既然不能解析,那不是与friendly的作用冲突了么?
...全文
325 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuxichun 2008-04-01
  • 打赏
  • 举报
回复
private是IDE自己加的,忘记去除
haoxiongok 2008-04-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 eric0cn 的回复:]
首先如果你用默认修饰符,那就不能加private 。第二,在B里应用A的东西要加类名,参考如下:

A.java
package a;

public class A {

static int a = 1;
}

B.java
package a;

class B
{

public void run() {
// TODO Auto-generated method stub
System.out.print("a =" +A.a);//错误,编译器说a无法解析
}

}
[/Quote]
chensjmail 2008-03-31
  • 打赏
  • 举报
回复
呵呵,等等,
楼主
private static int a = 1; 

这是私有的属性哦,同一个包也不可以打破这样的封装吧,
内部类才可以直接访问到这样的属性

4.1楼主在忽悠,呵呵
chensjmail 2008-03-31
  • 打赏
  • 举报
回复

//System.out.print("a =" +a);改为:
System.out.print("a =" +A.a);
hahalzx 2008-03-31
  • 打赏
  • 举报
回复
楼上的观点不对啊,应该是静态方法不能直接调用非静态变量,静态变量不用对象就可以直接通过 类名.变量名 调用的的啊
sosocom 2008-03-31
  • 打赏
  • 举报
回复
把static去掉你再看看...非静态方法不能直接调用静态变量
hahalzx 2008-03-31
  • 打赏
  • 举报
回复
在A中加个方法,调用a,然后再在B中调用A中的方法!
eric0cn 2008-03-31
  • 打赏
  • 举报
回复
首先如果你用默认修饰符,那就不能加private 。第二,在B里应用A的东西要加类名,参考如下:

A.java
package a;

public class A {

static int a = 1;
}

B.java
package a;

class B
{

public void run() {
// TODO Auto-generated method stub
System.out.print("a =" +A.a);//错误,编译器说a无法解析
}

}
hunsilj 2008-03-31
  • 打赏
  • 举报
回复
A class 中的a是私有的静态变量啊 外面谁都看不到

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧