我建了2个小文件,一个叫TestAccess.java  一个叫TestProtected.java
///////////////第一个文件//////////////////////////////////
public class TestAccess {
}class T {
private int i = 0;
int j = 0;
protected int k = 0;
public int m = 0;

public void m() {
i = 9;
}
}class TT {
public void m() {
T t = new T();
System.out.println(t.j);
}
}/////////////////////////////第二个文件////////////////////////////////
package m;public class TestProtected extends T {
public void mthod() {
System.out.println(k);
}
}
/////////////////////////////////////////////////////////////////////
这两个文件在同一个文件夹内,第一个文件可以编译,为什么第二个文件中写入“package m;”后就编译不了呢?而去掉之后就可以编译成功了?

解决方案 »

  1.   

    类T为默认..不能跨包访问..package test;public class T { 
    private int i = 0; 
    int j = 0; 
    protected int k = 0; 
    public int m = 0; public void m() { 
    i = 9; 

    } class TT { 
    public void m() { 
    T t = new T(); 
    System.out.println(t.j); 


    /////////////////////////////第二个文件////////////////////////////////
    package test.m; 
    import test.T;public class TestProtected extends T { 
    public void mthod() {System.out.println(k); 
    } } 
      

  2.   

    建议看一下package,public,private,protected..之类的东西
      

  3.   

    凡是用protected 修饰的属性的类,它的子类是可以访问到该属性的,包外的子类是可以的...我记得是这样的,你没有import ......