父类:public class Person {
protected int i = 100;
}
子类:package m;public class Person1 extends Person {
public void method() {
System.out.println(i);
}
}
本来是想验证protected型的成员变量可以被子类访问,但我在Person.java和Person1.java所在的路径D:\java\TestAccess\me下javac Person1.java后总是提示找不到Person符号。也找不到i这个符号。但是我要不把Person1打包,即不写package m;则编译javac Person1.java就可通过,一写package m;则编译就不通过。请大神们指教!
protected int i = 100;
}
子类:package m;public class Person1 extends Person {
public void method() {
System.out.println(i);
}
}
本来是想验证protected型的成员变量可以被子类访问,但我在Person.java和Person1.java所在的路径D:\java\TestAccess\me下javac Person1.java后总是提示找不到Person符号。也找不到i这个符号。但是我要不把Person1打包,即不写package m;则编译javac Person1.java就可通过,一写package m;则编译就不通过。请大神们指教!
protected int i = 100;
}
由于父类中你没有指定package,即Person类的原始码(Person.java)在D:\java\TestAccess\me目录下
package m;public class Person1 extends Person {
public void method() {
System.out.println(i);
}
}
子类中你指定了package m,即Person1类的原始码在D:\java\TestAccess\me\m 目录下
所以在me目录下javac Person1.java会出现编译错误,所以要import Person类的完全吻合名称
{
protected int i = 100;
}
public class Person1 extends Person
{
public static void main(String [] args)
{
Person1 p1 = new Person1();
System.out.println(p1.i);
}public void method()
{
System.out.println(i);
}}
javac m\Person1.java
如果你有extends,那么你还必须指定classpath
另外,如果Person和Person1不在同个package下,Person1需要import me.Person
protected 修饰的变量的访问权限是 “同包下的子类才可访问”
那么在你有包名的类里,无法使用无包名的类。
http://www.189works.com/article-69990-1.html
http://soft.zdnet.com.cn/software_zone/2009/1217/1562644.shtml