Java中抽象类和接口的不同

发表于:2020-8-25 10:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:不怕受伤的独行侠    来源:CSDN

#
Java
分享:
  在eclipse的使用使用中会有些抽象的用法,举个例子,人,“人”是比较抽象的,怎么样才算是“人”呢?会说话是个“人”吗,会跑步是个“人”吗等等,因为这些都是人的特征,所以就有抽象出了“人”的概念。
  抽象类
  1.概念:使用abstract修饰,继承时使用extends,由于类是抽象的,所以不能创建对象,同时,在类的内部的抽象方法无方法体并且要由子类去实现。
  2.格式:
  abstract class 类名{
  权限修饰词 abstract 返回值类型 类名();
  }
  3.抽象类与普通类的区别:
  (1) 抽象类必须用public或protected修饰(若为private修饰,无法被子类继承,从而无法实现其抽象方法,在默认情况是public)。
  (2) 若子类继承了该抽象类则必须要实现抽象类中的抽象方法,否则要将其子类也要定义为抽象类。
  那接口是什么呢?其实接口就相当于某团体具备着共同的特征或行为,举个例子,当我们去银行取钱的时候,会有不同的窗口,这些不同的窗口都可以帮你办理业务,因为他们有共同的任务,只不过由不同的窗口去实现。
  接口
  1.概念:使用interface修饰,继承时用implements,由于接口不能有具体的特征,要靠继承的子类去实现,就好像公务员是一个职位,但不同的公务员负责不同的工作。
  2.格式:
  interface 接口名称{
  数据类型 数据名称; //表示为全局常量
  权限修饰词 返回值类型 方法名(); //表示抽象方法
  }
  3.继承时,接口可以实现多个实现:
  class 子类 implements 接口1,接口2…{
  }
  在与类的继承一起使用时:
  class 子类 extends 父类 implements 接口1,接口2…{
  }
  4.注意:
  (1) 接口中可拥有变量和方法,但是,不能在接口内部实现,只能由子类实现
  (2) 当接口中有public static final时,则修饰的变量变为常量
  (3) 当接口要使用时,必须通过子类的继承,由子类实现抽象方法的进行使用(当子类为抽象类时,则仍需要抽象类的子类进而实现类与接口中的全部抽象方法)
  抽象类与接口的异同之处
  1.相同点:
  (1) 两者均不能被实例化
  (2) 两者的抽象方法中均不能有具体的实现
  2.不同点:
  (1) 一个类只能继承一个类,而接口可以是多个,比如:
  在类的继承中:
  class 子类 extends 父类 {
  }
  这种继承的方法是正确的
  class 子类 extends 父类1,父类2,… {
  }
  这种是错误的,子类只能有一个父类,就好比一个儿子只能有一个亲爹
   而接口:
   class 子类 implements 接口1,接口2,...{
   }
   对接口继承的理解就好比,一个儿子可以有好多个干爹
  (2) 在定义时,接口中的变量是公共静态变量(但不能是具体的),而抽象类的是普通变量(可以是具体的)
  (3) 在抽象类中可以有在内部的具体实现方法(指的是普通方法),而在接口中不能有具体的方法(只能有抽象方法)

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号