书中例子:
class A {
interface B {
void f();
}
public class BImp1 implements B {
public void f() {}
}
private class BImp2 implements B {
public void f() {}
}
public interface C {
void f();
}
public class CImp1 implements C {
public void f() {}
}
public class CImp2 implements C {
public void f() {}
}
private interface D {
void f();
}
private class DImp1 implements D {
public void f() {}
}
public class DImp2 implements D {
public void f() {}
}
public D getD() {
return new DImp2();
}
private D dRef;
public void receiveD(D d) {
dRef = d;
dRef.f();
}
}
interface E {
interface G {
void f();
}
//public 可以缺省
public interface H {
void f();
}
void g();
//不可以定义接口内嵌套接口私有的接口
//不可以private interface S{}
}
public class Interf {
public class BImp implements A.B {
public void f(){}
}
class Cimp implements A.B {
public void f() {}
}
//不能implementsA.D因为D是private的
class Eimp1 implements E {
public void g(){}
}
class EGimp1 implements E.G {
public void f(){}
}
class EImp2 implements E {
public void g(){}
}
class EGimp2 implements E.G {
public void g(){}
public void f(){}
}
public static void main(String[] args) {
A a = new A();
//不能访问A.D,不能A.D ad = a.getD()
//!A.Dimp2 di2 = a.getD();不能访问
A a2 = new A();
a2.receiveD(a.getD());
}
}
1.类中嵌套接口,
a.有public和包访问权限2种,并且都可以被public、包访问权限、private的子实现。
b.private修饰的接口既可以被实现为public的也可以是private的
c.但是a.Dimp2只能被起自身使用,因为他实现的接口D是 private的,因此它可以强制该接口的方法不能添加任何类型信息,(也就是不允许向上转型)
d.但是getD方法返回确实private接口D的引用,此方法public的,使用这个方法的返回值只有一种把返回值交给有权使用它的对象。本例中是另外一个A通过receiveD来实现
2.接口内也可以被嵌套
3.Interf 中,你实现某个接口时,并不需要实现接口内部的嵌套接口,private接口不能在定义它的类之外被实现。
class A {
interface B {
void f();
}
public class BImp1 implements B {
public void f() {}
}
private class BImp2 implements B {
public void f() {}
}
public interface C {
void f();
}
public class CImp1 implements C {
public void f() {}
}
public class CImp2 implements C {
public void f() {}
}
private interface D {
void f();
}
private class DImp1 implements D {
public void f() {}
}
public class DImp2 implements D {
public void f() {}
}
public D getD() {
return new DImp2();
}
private D dRef;
public void receiveD(D d) {
dRef = d;
dRef.f();
}
}
interface E {
interface G {
void f();
}
//public 可以缺省
public interface H {
void f();
}
void g();
//不可以定义接口内嵌套接口私有的接口
//不可以private interface S{}
}
public class Interf {
public class BImp implements A.B {
public void f(){}
}
class Cimp implements A.B {
public void f() {}
}
//不能implementsA.D因为D是private的
class Eimp1 implements E {
public void g(){}
}
class EGimp1 implements E.G {
public void f(){}
}
class EImp2 implements E {
public void g(){}
}
class EGimp2 implements E.G {
public void g(){}
public void f(){}
}
public static void main(String[] args) {
A a = new A();
//不能访问A.D,不能A.D ad = a.getD()
//!A.Dimp2 di2 = a.getD();不能访问
A a2 = new A();
a2.receiveD(a.getD());
}
}
1.类中嵌套接口,
a.有public和包访问权限2种,并且都可以被public、包访问权限、private的子实现。
b.private修饰的接口既可以被实现为public的也可以是private的
c.但是a.Dimp2只能被起自身使用,因为他实现的接口D是 private的,因此它可以强制该接口的方法不能添加任何类型信息,(也就是不允许向上转型)
d.但是getD方法返回确实private接口D的引用,此方法public的,使用这个方法的返回值只有一种把返回值交给有权使用它的对象。本例中是另外一个A通过receiveD来实现
2.接口内也可以被嵌套
3.Interf 中,你实现某个接口时,并不需要实现接口内部的嵌套接口,private接口不能在定义它的类之外被实现。