Java中的extends和implements区别

一、含义 

     1、extends 用于继承父类,只要那个类不是声明final或者定义为abstract就能继承。如:

class A{
    int i;
    void f(){
        //此方法实现代码
    }
}

class B extends A{
    int j;
    void f(){
        //此方法实现代码,重写了父类的同名方法
    }  
    void g(){
        //此方法实现代码
    }
}

     2、implements 用于实现接口,因为接口只定义方法,没有程序实现,它必须由使用者来实现这些功能。如:

//定义一个体育运动(Sport)的接口,其内部只有方法定义而无程序实现代码
interface Sport {
      void run();//跑步
      void jump();//跳跃
}

//定义一个运动员(Athlete)类,引入了Sport接口并实现了它
class Athlete implements Sport {

      public void run() {
          System.out.println("短跑");
      }

      public void jump() {
          System.out.println("跳高");
      }
 
      public static void main(String[] args) {
          Ahtlete al=new Ahtlete();
          al.run();
          al.jump();
      }
}

 二、区别

     extends和implements有什么不同? 

     对于class而言,extends用于(单)继承一个类(class),而implements用于实现一个或多个接口(interface)。  

     interface的引入是为了部分地提供多继承的功能。在interface中只需声明方法头,而将方法体留给实现的class来做。这些实现的class的实例完全可以当作interface的实例来对待。在interface之间也可以声明为extends(多继承)的关系,即一个interface可以extends多个其他interface,extend可以继承一个接口,但仍是一个接口,还是需要implements之后才可使用的。

    extends:可以理解为全盘继承了父类的功能

    implements:可以理解为为这个类附加一些额外的功能

     举个动物类(猫、狗、鸟、昆虫)的例子:

     Animal是一个父类,cat,dog,bird,insect都extends了Animal,但是cat,dog还可以implements比如跑、叫(run、shout)这些interface,bird,insect可以implements比如飞(fly)这些interface。

     java中不支持多重继承,但是可以使用接口来实现这一目的,这样就要用到implements。继承只能继承一个父类,但implements可以实现多个接口,用逗号分开就行了 比如 :

class A extends B implements C,D,E{
     //...
}

接口实现的注意点:

    a.实现一个接口就是要实现该接口的所有的方法(抽象类除外)。

    b.接口中的方法都是抽象的。

    c.多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。

与extends的不同

    extends,可以实现父类,也可以调用父类初始化 this.parent()。可以继承、覆盖父类定义的变量或者函数。这样的好处是:架构师定义规划好类的接口(类中的方法),让工程师具体实现就可以了。整个项目开发效率和开发成本大大降低。

    implements,实现父接口,子类不可以覆盖父接口的方法或者变量。即使子类定义与父类相同的变量或者函数,也会被父接口中的相同的变量或者函数取代掉。

    这两种实现的具体使用,要看项目的实际需要,如果希望实现不可以修改父类,使用implements,只定义接口需要具体实现;如果希望允许修改或者扩展父类,则使用extends。

三、接口和抽象类的区别

    1、接口可以被多重implements,抽象类只能被单一extends;

    2、接口只有定义,抽象类可以有定义和实现;

    3、接口的字段定义默认为public static final,抽象类字段默认是“friendly”(本包可见)。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值