匿名用户
1级
2012-07-30 回答
public interface Interface1 {
void method1();
}
public class Class1 {
protected class Class1Inner implements Interface1 {
public void method1() {
System.out.println("Class1Inner");
}
}
}
public class Class2 extends Class1 {
public Interface1 getFatherInner() {
// 因为Class1Inner是protected的,因此Class2中已经继承到Class1Inner了
return new Class1Inner();
}
}
追问:
报错……
追答:
(⊙o⊙)…我运行不报错
interface Interface1 {
void method1();
}
class Class1 {
protected class Class1Inner implements Interface1 {
public void method1() {
System.out.println("Class1Inner");
}
}
}
public class Class2 extends Class1 {
public Interface1 getFatherInner() {
// 因为Class1Inner是protected的,因此Class2中已经继承到Class1Inner了
return new Class1Inner();
}
public static void main(String[] args) {
System.out.println(new Class2().getFatherInner());
}
}
追问:
好吧……我放到同一个类下面就不报错了。。为什么我分放在3个包内就报错?
package P195_6P1; //Interface1
package P195_6P2; //Class1
import P195_6P1.*;
package P195_6P3; //Class2
import P195_6P1.*;
import P195_6P2.*;
追答:
package a;
import c.Interface1;
public class Class1 {
protected int a = 1;
protected class Class1Inner implements Interface1 {
public Class1Inner() {
// 构造器需要定义成public的,在包外才能访问到
}
public void method1() {
System.out.println("Class1Inner");
}
}
}