就是
private Ishape=shape;//Ishape为接口
public shapeProc(Ishape shape){
this.shape=shape;}//shapeProc 为构造函数
这为什么可以编译通过呢?
小白,求指导
shape是传进来的参数,自然是调用它的代码负责初始化。
肯定有这样的代码:
某实现了ISharp的类 shape = new 某实现了ISharp的类();
xxx.shapeProc(sharp);
public shapeProc(Ishape shape) 在于这里,构造函数中已经有一个接口的实现传进来了(注意不是接口传进来了)
在java中,可以通过接口的定义来“代表”子类的类型。
如下是可以运行通过的
interface C{
}
public class Test implements C {
public static void main(String[] args){
C c = new Test();
}
}
java接口的定义与实现,应该是这样使用的,具体参考一下这个:http://blog.csdn.net/yjkwf/article/details/7238847
不明白,你问题的用意是什么?
楼上说的很对!接口是可以这样使用的!
接口定义的是多个类共同的行为规范,这些行为是与外部交流的通道,这就意味着接口里通常是定义一组公用的方法。接口体现了规范与实现分离的设计。接口可以用于声明引用类型的变量,但接口不能用于创建实例。当使用接口来声明引用类型的变量时,这个引用类型的变量必须引用到其实现类的对象。
接口声明引用类型的变量,例如: 接口 变量名=new 接口的实现类(); 这就是一种多态!
比如,创建一个接口,名字叫 Fly(飞),然后一个Bird(鸟)类实现了此接口(鸟儿可以飞),那么 Fly f=new Bird()可以这样翻译:我想要一个会飞的东西,那么无论你给我飞机、飞船还是蝙蝠、小鸟都是符合要求的,所以Fly f=new Bird();完全合理!
更多教程可以关注我的博客。
构造函数虽然参数是个接口,但实质上调用该方法的类传入的参数是一个实现该接口的class,
构造函数虽然参数是个接口,但实质上调用该方法的类传入的参数是一个实现该接口的class,
不太明白你问的啥意思,不过楼上回答的相当不错啊