我用的是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成员?
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?
-------------------------------------------------------
静态成员,包括变量,函数!他们是属于类的,不属于某个特定的对象实例的。