A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 希望的曙光 中级黑马   /  2013-1-10 01:04  /  1289 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 希望的曙光 于 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();
}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

4 个回复

倒序浏览
你在下面定义了一个接口,叫Iinterface
而你的 ping类实现了这个接口
Iinterface D = new ping();就是说,创建一个Iinterface类型的引用,指向ping类的实例对象

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
implements关键字表示的是一种特殊继承关系。
可以简单认为它就是继承关系。
也就是说只要继承这个接口,那么它的实现类就属于接口这种类型。
就可以产生一个父类的引用指向子类,当调用时会根据你具体创建的对象来调用它所对应的方法。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
这个是接口的引用指向实现它子类的对象  你这里在编译的时候声明的是一个接口对象 但是他指向的是你new Ping()这个子类对象。  这个也是多态度一种体现。然后你调用的他的方法时候,他的方法都是被子类去实现的,所以在运行时调用的是子类的方法。
Iinterface I = new ping();
I.show();
Iinterface D = new Demo1();
D.show();

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
首先:因为接口可以说是特殊的抽象类,接口里面只能定义常量和抽象方法,接口中的常量默认是public static final修饰的,即需要立即赋值,方法默认是方法默认是public abstract.
所有他像抽象类一样,不能实例化,所有用类来实现接口,并且重写接口的抽象方法.
Iinterface I = new ping();向上转型,创建了一个引用,用来指向它,

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马