我用的是visual studio.net中的J#进行编译
下面的2个文件在一个工程中
文件1:
package shuai.mypackage;public class A
{
protected int i = 3;
}
文件2:
public class B extends A
{
static void f()
{
A a= new A();
a.i = 0;
}
public static void main(String[] args)
{
f();
}
}
错误是:不能访问a.i。如果将文件1中的i定义成static protected int i = 3;就没有问题,为什么?
该怎么使用package中的protected成员?
下面的2个文件在一个工程中
文件1:
package shuai.mypackage;public class A
{
protected int i = 3;
}
文件2:
public class B extends A
{
static void f()
{
A a= new A();
a.i = 0;
}
public static void main(String[] args)
{
f();
}
}
错误是:不能访问a.i。如果将文件1中的i定义成static protected int i = 3;就没有问题,为什么?
该怎么使用package中的protected成员?
解决方案 »
- java如何访问类中的全局变量
- 请教一下JAVA关于对象实例调用的问题,写符合OO原则的程序事的问题
- 用java如何获取当前客户端windows用户名
- 由一个日期怎么获得当前日期所在周的所有日期!
- tomcat 和 apache整合问题
- Log4j的高手们请进!!!!
- jdbc 访问Oracle数据库中的ResultSet问题
- 请问JDBC连接中如何判断一个表是否存在呀?你开个价
- 应怎样设CLASSPATH呢?
- 关于Socket的问题 请大神指教
- (Eclipse版没人气,俺就在这问了)俺用Eclpise30,编译不了原来的tomcat项目,用2.0没这个问题!咋回事啊?
- 一个画图程序的一点问题
public class A
{
protected int i = 3;
public void int setI(int parm)
{
this.i=parm;
}
public int getI()
{
return this.i;
}
}然后在Class B中,你可以通过setI(int parm)和getI()来访问和修改i的值
public int getI()
{
return i;
}
就可以轻松搞定!
那么protected的优势(除了在本package中)又在哪里呢?
TO cuilichen(fjfjfjfj):
把 i 声明成public好用
你extends A以后,只能访问B里面的i
在main中生成另一个A对象,此对象与B生成的对象没有任何关系!
为什么可以访问A的对象里面的i?
-------------------------------------------------------
静态成员,包括变量,函数!他们是属于类的,不属于某个特定的对象实例的。