黑马程序员技术交流社区

标题: 接口理解的问题? [打印本页]

作者: 希望的曙光    时间: 2013-1-10 01:04
标题: 接口理解的问题?
本帖最后由 希望的曙光 于 2013-1-10 01:05 编辑

public class ping implements Iinterface {
public static void main(String[] args) {                     
  //这里该怎么理解呢??????????????????????????????????????
Iinterface I = new ping();
I.show();
Iinterface D = new Demo1();
D.show();
}
public void show()
{
    System.out.println( "main  ......  show");
}
}
class Demo1 implements Iinterface
{
   //接口实现
   public void show()
    {
        System.out.println( "Demo1  ......  show");
    }
}
interface Iinterface
{
    void show();
}
作者: 汪叶庭    时间: 2013-1-10 07:29
你在下面定义了一个接口,叫Iinterface
而你的 ping类实现了这个接口
Iinterface D = new ping();就是说,创建一个Iinterface类型的引用,指向ping类的实例对象

作者: 罗利华    时间: 2013-1-10 14:23
implements关键字表示的是一种特殊继承关系。
可以简单认为它就是继承关系。
也就是说只要继承这个接口,那么它的实现类就属于接口这种类型。
就可以产生一个父类的引用指向子类,当调用时会根据你具体创建的对象来调用它所对应的方法。
作者: 张森    时间: 2013-1-10 18:51
这个是接口的引用指向实现它子类的对象  你这里在编译的时候声明的是一个接口对象 但是他指向的是你new Ping()这个子类对象。  这个也是多态度一种体现。然后你调用的他的方法时候,他的方法都是被子类去实现的,所以在运行时调用的是子类的方法。
Iinterface I = new ping();
I.show();
Iinterface D = new Demo1();
D.show();
作者: 赵晓波    时间: 2013-1-11 00:37
首先:因为接口可以说是特殊的抽象类,接口里面只能定义常量和抽象方法,接口中的常量默认是public static final修饰的,即需要立即赋值,方法默认是方法默认是public abstract.
所有他像抽象类一样,不能实例化,所有用类来实现接口,并且重写接口的抽象方法.
Iinterface I = new ping();向上转型,创建了一个引用,用来指向它,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2