ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

抽象类与接口

2022-08-04 21:33:13  阅读:107  来源: 互联网

标签:实现 子类 接口 抽象 抽象类 方法


抽象类

  • abstract修饰符,修饰类,该类就是抽象类;修饰方法,该方法就是抽象方法;

    格式:遵循普通格式,但修饰符必须有abstract;

  • 抽象方法,只有方法的声明,没有方法的实现(方法体),依靠子类来实现,没有{},以;结尾;

  • 子类继承抽象类,就必须要全部实现抽象类没有实现的抽象方法,否则该子类也必须是抽象类;

  • 抽象类的使用注意点:

    ①抽象类单独存在没有任何价值,一般被设计成一个父类使用;

    ②抽象类如果不定义抽象方法,那么该方法就是让它的子类来使用的;

    ③一个方法如果没有方法体,那必须使用abstract关键字修饰;

  • abstract不可与private(私有的,不可继承)、final(最终的、没有子类)、static(静态的,类中默认执行,而抽象类必须子类继承执行,矛盾)


  1. 抽象类不能new,它是让子类继承的,只能依靠子类去实现:约束

  2. 抽象类可以具有类的所有特征(包括属性、方法、构造等),

  3. 抽象方法只能在抽象类或者接口中,抽象类中可有可无抽象方法、普通方法,但抽象类中一般都存在抽象方法。

接口

  • 为了弥补java单继承的缺陷,通过接口进行多实现;接口是抽象方法的集合

  • 普通类:只有具体实现;
  • 抽象类:具体实现和规范(抽象方法)都有;
  • 接口:只有规范,起约束作用; ①本质也是一种类; ②一般定义抽象方法,不能定义普通方法、成员变量; ③实现的关系本质上是一种继承关系; ④接口没有构造方法,它的实现类不能使用super关键字来调用接口中的信息 ⑤一个实现类可以同时实现多个接口类,一个接口类也可以同时继承多个接口

声明类的关键字是class,声明接口的关键字是interface

  • 接口的实现:类名 implements 接口名{}

    • 实现接口,必须将接口内的抽象方法全部重写,否则该类需定义为抽象类;

    • 实现,将基于接口的类实例化;

    • 一个类可以同时继承+实现,先继承后实现;类名 extends 父类 implements 接口;

  • 当接口内部,有且仅有一个需要实现的方法,使用A a = ->{ 重写的方法};


  • 接口的作用:

    • 提高程序的重用性

    • 提高程序的可扩展性

    • 降低程序的耦合度

    • 实现了多继承

    • 增加安全性

  • 接口与类相似点:

    • 一个接口可以有多个方法,

    • 接口文件保存在.java结尾 的文件中,文件名使用接口名。

    • 接口的字节码文件保存在.class结尾的文件中。

    • 接口相应的字节码文件必须在与包名称相匹配的目录结构中。

  • 接口与类的区别:

    • 接口不能实例化对象

    • 接口没有构造方法

    • 接口所有的方法只能是抽象方法,必须public abstract修饰,(默认public abstract修饰,一般不再写) jdk1.8之后,内部可以有默认方法(显式的用default修饰,借用实现类的对象调用)、静态方法(static,借助 接口名.方法名 调用)

    • 接口不能包含成员变量,默认都是静态常量(默认public static final修饰);

    • 接口不是被继承,而是要被实现

    • 接口不能实现接口,但接口支持多继承接口;接口 extends 接口1,接口2,·······{}

  • 接口与抽象类的区别

    • 抽象类中的方法可以有方法体,能实现方法的具体功能,但接口中的方法不行;

    • 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final 类型的;

    • 接口中不能含有静态代码块而抽象类是可以有静态代码块;

    • 一个类只能继承一个抽象类,但可以实现多个接口;

标签:实现,子类,接口,抽象,抽象类,方法
来源: https://www.cnblogs.com/xuduoduo92/p/16552361.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有