java抽象类和接口知识点总结

硅谷探秘者 1339 0 0
参数 抽象类 接口
默认的方法实现 它可以有默认的方法实现 接口完全是抽象的。它根本不存在方法的实现
实现 子类使用 extends 关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字 implements 来实现接口。它需要提供接口中所有声明的方法的实现
构造器 抽象类可以有构造器 接口不能有构造器
与正常 Java 类的区别 除了你不能实例化抽象类之外,它和普通 Java 类没有任何区别 接口是完全不同的类型
访问修饰符 抽象方法可以有 publicprotected 和 default 这些修饰符 接口方法默认修饰符是 public。你不可以使用其它修饰符。
main 方法 抽象方法可以有 main 方法并且我们可以运行它 接口没有 main 方法,因此我们不能运行它。
多继承 抽象方法可以继承一个类和实现多个接口 接口只可以继承一个或多个其它接口
速度 它比接口速度要快 接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。
添加新方法 如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。 如果你往接口中添加方法,那么你必须改变实现该接口的类。

 

抽象类
  1. 抽象类中可以构造方法
  2. 抽象类中可以存在普通属性,方法,静态属性和方法。
  3. 抽象类中可以存在抽象方法,抽象方法不能有方法体。
  4. 如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。
  5. 抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。
  6. 抽象类不能被实例化,抽象类和抽象方法必须被 abstract 修饰
  7. 关键字使用注意:抽象类中的抽象方法(其前有 abstract 修饰)不能用 private、static、synchronized、native 访问修饰符修饰。
  8. 抽象类可以实现接口,但是抽象类不必实现接口的方法。但当抽象类不实现接口方法时,继承该抽象类的非抽象类必须实现抽象类的抽象方法和接口方法,但是当抽象类实现接口方法的时候,继承的类就不用在实现该方法了,本质上,接口和抽象类的方法都是abstract 方法,abstract 方法需要实现,沿着继承链一层层找一下,总要有实现该方法的类。
 接口
  1. 在接口中只有方法的声明,没有方法体。
  2. 在接口中只有常量,因为定义的变量,在编译的时候都会默认加上 public static final
  3. 在接口中的方法,永远都被 public 来修饰,没有修饰的情况下默认是public abstract。
  4. 接口中没有构造方法,也不能实例化接口的对象。(所以接口不能继承类)
  5. 接口可以实现多继承 也就是 可以extends interfaceA,interfaceB,
  6. 接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法则实现类定义为抽象类。
  7. 接口可以继承接口,用 extends,但是接口不允许implements
注意:
  1. 抽象类 可以有 private 属性和 private 方法,原因:因为抽象类可以有自己方法实现,自己方法的实现可能会用到自己的私有变量。可以通过自身公有方法调用自身的私有方法。
  2. 接口中只能有全局常量和公共的抽象方法,不能有 private 属性和方法
  3. 匿名内部类可以不声明显式的对象而直接实例化抽象方法或者接口。

 原文地址:https://blog.csdn.net/qq_33945246/article/details/90768050


评论区
请写下您的评论...
暂无评论...
猜你喜欢
java基础 2594 泛型1.什么是泛型Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时型安全检测机制,该机制允许程序员在编译时检测到非法的型。泛型的本质是参数化型,也就是说所操作的数
算法基础 1857 如果一个实现了一个,如何获取中泛型的实际型importjava.lang.reflect.ParameterizedType; importjava.lang.reflect.Type
weblog 1047 java攻城尸,熟练使用各种框架,并道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对池,连池,线程池...:;java反射技术,写框架必备的技术,但是
java基础 2234 Java集合框架数据构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问处理数据的操作。Java提供了几个能有效地组织操作数据的数据构,这些数据构通常称为Java集合框架。在平
ASM,java基础 887 、InvocationHandler  InvocationHandler可以实现对的代理,似与mybatis,代码中开发者只需要写一个一个xml,mybatis会根据xml的描述信息,帮你生成对应的方法实现,参数的解析
java基础 2320 走向可分为输入流输出流,这个走向是以内存为基准的,即往内存中读数据是输入流,从内存中往外写是输出流。根据处理的数据型可分为字节流字符流1.字节流可以处理所有数据型的数据,在java中以Strea
java基础 2567 java常用反射方法以及用法packagereflect;importjava.lang.annotation.ElementType
工具 2641 /dependency2.java代码调用SoapClientclient=SoapClient.create("http://cwzf.zzcsjr.edu.cn/xysf/OrderView.asmx")//设
归档
2018-11  12 2018-12  33 2019-01  28 2019-02  28 2019-03  32 2019-04  27 2019-05  33 2019-06  6 2019-07  12 2019-08  12 2019-09  21 2019-10  8 2019-11  15 2019-12  25 2020-01  9 2020-02  5 2020-03  16 2020-04  4 2020-06  1 2020-07  7 2020-08  13 2020-09  9 2020-10  5 2020-12  3 2021-01  1 2021-02  5 2021-03  7 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。