ICode9

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

抽象方法与接口

2022-07-30 00:03:13  阅读:125  来源: 互联网

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


抽象方法:

  1没有方法体的方法,用abstract修饰

  2具有抽象方法的类必须是抽象类,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。

  3抽象类中可以有抽象方法也可以没有,可以有普通方法。

  4抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

 

 

接口(解决多继承问题):

  1默认:抽象方法、静态常量 (常量名大写 可以直接由类名 . 出来)

  2实现类实现接口必须重写接口中的所有抽象方法 除非实现接口的类(子类)是抽象类

  3在java1.8之前接口只能写无方法体的抽象方法,在之后可以使用default修饰写普通方法,也可以使用static修饰写静态方法  接口也可以作为数据类型接受子类对象(多态)

  接口不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

  接口与类的相似点

    1.一个接口可以有多个方法

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

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

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

  接口与类的区别

    1.接口不能用于实例化对象

    2.接口没有构造方法

    3.接口中所有的方法都必须是抽象方法,在java8之后 接口中可以使用default关键字修饰的非抽象方法。

    4.接口不能包含成员变量,除了static和final变量

    5.接口不是被类继承了,而是要被类实现

    6.接口支持多实现(多继承)

  接口特征

    1.接口中每一个方法都是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是public abstract 其他修饰符会报错)  (JDK1.9之后,允许将方法定义为private,是的某些复用的代码不会把方法暴露出去)

    2.接口中可以有变量,但是接口中的变量会被隐式的制定为public static final变量(并且只能是public,用private修饰会报编译错误)

    3.接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

  抽象类和接口的区别

    1.抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行(JDK1.8之前)

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

    3.接口中不能含有静态代码块以及静态方法(用static修饰的方法),而抽象类是可以有静态代码块和静态方法的。

    4.一个类只能继承一个抽象类,而一个类却可以实现多个接口,接口可以继承另一个接口,也可以实现多继承

 

  标记接口

 

    最常用的继承接口是没有包含任何方法的接口。

 

    标记接口是没有任何方法和属性的接口.它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情。

 

    标记接口作用:简单形象的说就是给某个对象打个标(盖个戳),使对象拥有某个或某些特权。

    没有任何方法的接口被称为标记接口。标记接口主要用于以下两种目的:

  • 建立一个公共的父接口:

    正如EventListener接口,这是由几十个其他接口扩展的Java API,你可以使用一个标记接口来建立一组接口的父接口。例如:当一个接口继承了EventListener接口,Java虚拟机(JVM)就知道该接口将要被用于一个事件的代理方案。

  • 向一个类添加数据类型:

    这种情况是标记接口最初的目的,实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法),但是该类通过多态性变成一个接口类型。

 

 

标签:标记,实现,接口,抽象,抽象类,方法
来源: https://www.cnblogs.com/On1on/p/16534040.html

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

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

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

ICode9版权所有