好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
implements和extends的区别是什么? 关闭 返回上一级  

implements和extends的区别是什么?
+ 查看更多

发布日期:2018-03-10 10:45
分类:JAVA
浏览次数:146

implements和extends:分别适合什么情境?区别是什么?不好意思问了个基础问题,我已经在网上搜索并阅读了一些关于这个话题的文章,但我不是很理解他们说的。

回答

extends 用于扩展一个类(Class),而implements 用于实现一个接口(interface)。
接口(interface)和类(Class)之间的区别就是,你不能在接口中实现任何方法。只有“implements”某一个接口的类才能实现那个接口的方法。
在C++中和接口(interface)对应的是虚类(不完全等同但很相近),而且Java不支持多继承类,但可以多继承接口。
为什么要整出这么多概念呢?其实随着你对语言的了解加深,你会发现两个流派(工程派和学院派)。当两个流派的大神无法互相说服对方的时候,往往会导致一个相似的想法或诉求有着两种相似的实现方式(但绝对会有微弱的不同)。虚类和接口就是最好的例子。
 public interface ExampleInterface{
    public void do();
    public String doThis(int number);
 }

 public class sub implements ExampleInterface{
     public void do(){
       //specify what must happen
     }

     public String doThis(int number){
       //specfiy what must happen
     }
 }
然后继承一个类
 public class SuperClass{
    public int getNb(){
         //specify what must happen
        return 1;
     }

     public int getNb2(){
         //specify what must happen
        return 2;
     }
 }

 public class SubClass extends SuperClass{
      //you can override the implementation
      @Override
      public int getNb2(){
        return 3;
     }
 }
在这个例子中
  Subclass s = new SubClass();
  s.getNb(); //returns 1
  s.getNb2(); //returns 3

  SuperClass sup = new SuperClass();
  sup.getNb(); //returns 1
  sup.getNb2(); //returns 2
我建议你对面向对象编程中的动态绑定,多态性和继承做一些更多的研究
上一篇如何使用Java将列表转换为数组
JAVA如何读取一个文件夹中全部文件下一篇
下一篇JAVA如何读取一个文件夹中全部文件

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号