zoukankan      html  css  js  c++  java
  • JAVA-初步认识-第九章-面向对象-接口实现implements

    一.

    接口定义完了,接下来干嘛用?你要说一抽象类的话,是不是要搞个子类去继承这个类,并覆盖里面的方法。搞接口的话,怎么办呢?也是搞个子类继承这个接口?不。

    如果你是个类的话,就搞个类去继承你,如果变成了接口的话,就不再用继承了。可以采用另外一种更直观的表现方式,叫做实现。

    为什么叫做实现呢?接口里面的方法全都是抽象的,所以必须要全实现。而对于抽象类来讲,有些东西是不抽象的,子类可以直接拿过来用的,这就是实现和继承的区别。继承可以拿过来一些我不需要做,拿过来就能用的东西,而实现是不是说,你这里面有的,我都得去覆盖,这叫实现。里面没有一个能用,全都要自己重写

    类与类之间是继承关系,类与接口之间,换一种更确切的表述方式,叫实现。

    二.

    实现怎么写呢?

    为什么写成DemoImpl,阅读性更好一些,

    一看到DemoImpl,就想到了实现了Demo接口的实现类,某一个接口的实现类,Impl是简写。一般呢,会这么去取名字。

    一个类去实现接口以后,这个接口里面有很多抽象方法,也要拿过来,和继承原理是一样的。如果里面没有抽象方法,那么它就是抽象类,(而不是接口)。再说一遍,一个类实现了接口,相当于获取了接口里面的所有内容,看下图。

    它没有去覆盖show1(),show2()这两个方法,直接拿了这两个抽象的,那它还是个抽象类,而不是接口。

    因此,实现接口以后,你想要实例化,必须覆盖所有的抽象方法。

    接口是另一种形式的抽象类,里面全是抽象方法,当然不可以实例化了。

    实现接口覆盖的时候,一定要写public(这是针对接口内的成员而言的,写法固定),否则编译会失败。方法体的内容可以自己定义了。

    接口也有了,子类也有了,接下来就是创建对象。

    上面截图中的三个输出语句哪个对?这三句话都对(我的理解是第二句和第三句,说的都是抽象类,无法实例化,但是阻碍调用么?) 第三句,接口的名称调用自己的成员,一加载语句就存在了。第二句,是子类拿过来用。第一句,是对象调用,因为你先在,我后在。无论谁调用,都不能写d.NUM=3, 因为NUM的值是final,不能被改变。

    这就是实现的特点。

  • 相关阅读:
    topcoder srm 320 div1
    topcoder srm 325 div1
    topcoder srm 330 div1
    topcoder srm 335 div1
    topcoder srm 340 div1
    topcoder srm 300 div1
    topcoder srm 305 div1
    topcoder srm 310 div1
    topcoder srm 315 div1
    如何统计iOS产品不同渠道的下载量?
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/7759768.html
Copyright © 2011-2022 走看看