package p2;
public class C1 {
protected static class C2 {
void fun1() {}
}
}
//T1.java
import p2.*;
public class T1 extends C1 {
C1.C2 fun2() { return new C1.C2(); }
}
public class C1 {
protected static class C2 {
void fun1() {}
}
}
//T1.java
import p2.*;
public class T1 extends C1 {
C1.C2 fun2() { return new C1.C2(); }
}
可以在外部定义一个和inner class一样的class来代替C1.C2作为fun2()返回值的类型试试看。
我在外面上的网,没有JDK,楼主试的结果告一声,谢谢。
public class T1 extends C1.C2 {
C1.C2 fun2() { return new C1.C2(); }
}
{
protected C2 getC2()
{
return new C2();
}
protected class C2
{
void fun1() {}
}
}
//T1.java
import com.*;
public class T1 extends C1
{
C2 fun2()
{
return this.getC2();
}
}
根据java的语法Protected是不能在继承类中“访问“的。
Access outside of a package:
Access Modifier Inherited Accessible
default (no modifier) No No
Public Yes Yes
Protected Yes No
Private No No
class C1
{
protected class C2
{
void fun1() {}
}
}
public class T1 extends C1
{
C1.C2 fun2() { return new C1.C2(); }
}
呵呵……
呵呵……