Java基础篇:抽象类与接口

Java基础篇:抽象类与接口

1、抽象类和接口的定义:

(1)抽象类主要用来抽取子类的通用特性,作为子类的模板,它不能被实例化,只能被用作为子类的超类。

(2)接口是抽象方法的集合,声明了一系列的方法操作,自身并不能做任何事情。如果一个类实现了某个接口,那么它必须实现这个接口的所有抽象方法。

 

2、抽象类与接口的区别:

(1)抽象类和接口都不能直接实例化,都是用来抽象具体对象的,但是两者的侧重点不同:抽象类主要用来抽象类型,表示这个对象是什么;接口主要是对动作的抽象,主要用来抽象功能,表示这个对象能做什么;

(2)接口可以看成抽象类的变体,所有方法都是抽象的,因此接口只能做方法的声明,不能有方法的实现;而抽象类可以有默认的方法实现,既可以做方法的声明,也可以做方法的实现;

如果往抽象类中添加新的方法,可以给他提供默认的实现,因此可以不需要改变子类的代码;

如果往接口中添加方法,那么必须改变实现该接口的类(JDK8 之后,接口也可以有默认的实现)

(3)接口可以继承多个接口,抽象类不可以多继承类,但可以单继承类或多实现接口。

(4)抽象方法和接口函数都不能使用static修饰。抽象方法的访问修饰符可以是public、protected和default,不能是private;接口的默认访问修饰符为public,不能使用其他修饰符。

(5)接口的变量只能是不可变常量,默认修饰符都是public static final;但是抽象类的变量可以是普通变量

(6)抽象类可以有构造器,接口不能有构造器。

(7)抽象类的抽象方法必须全部被子类所实现,如果子类不能全部实现抽象方法,那么该子类只能是抽象类;接口是实现类可以使用implements关键字来实现接口,接口实现类必须提供接口中的所有声明的方法的实现。

(8)与正常Java类的相比:抽象类除了不能实例化之外,和正常Java类没有任何区别,但接口和正常Java类是完全不同的类型。

(9)抽象类和接口是Java语言中两种不同的抽象概念,他们的存在对多态提供了非常好的支持,虽然他们之间存在很大的相似性。抽象类的功能远远超过接口,但是定义抽象类的代价比较高。因为每个类只能继承一个类。因此,在这个抽象类中,你必须编写出其子类的所有共性。虽然接口在功能上会弱化很多,但是他只是针对一组动作的描述,而且可以在一个类中同时实现多个接口,因此在设计阶段会降低难度。

 

3、分别在哪些地方使用抽象类和接口?

(1)当你关注一个事物的本质时,使用抽象类;当你关注一组操作的时候,使用接口。

(2)如果拥有一些方法并且想让他们中有一些默认的是实现,那么可以使用抽象类。

(3)如果想实现多重继承,那必须使用接口。由于Java不支持多继承,子类不能够继承多类,但是可以实现多个接口。

(4)如果基本功能在不断改变,那么就需要使用抽象类,如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。

 

附另外一篇写的很好的有关抽象类和接口的博客:https://blog.csdn.net/chenssy/article/details/12858267

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/114684.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pytest重试_pytest失败重跑

    pytest重试_pytest失败重跑安装:pip3installpytest-rerunfailures重新运行所有失败用例要重新运行所有测试失败的用例,请使用–reruns命令行选项,并指定要运行测试的最大次数:$py

  • java反射的实现_c程序设计

    java反射的实现_c程序设计Java程序设计(高级及专题)- 类的加载和反射

  • javaweb-爬虫-1-62

    javaweb-爬虫-1-62

  • 简介支持向量机热门(认识SVM三位置)

    简介支持向量机热门(认识SVM三位置)

    2021年12月17日
  • 如何卸载干净JAVA?「建议收藏」

    如何卸载干净JAVA?「建议收藏」有很多小伙伴下载了JAVA的JDK(java开发工具包)并安装成功运行后,发现自己下错了版本。凉了,半天白搞了。卸载之后又发现在再安装出现安装不了的问题。这往往是因为JAVA并没有卸载完全。今天我们就看看如何完全卸载JAVA。JAVA卸载有两种方式。手动和用JAVA卸载工具。第一种,手动。1.打开控制面板,找到卸载程序,在找到java的程序,并卸载。2.这样之后,java虽然看不见了。但是还没有卸载干净。打开命令行窗口,输入命令regited。打开注册表窗口,删除ja…

  • Linux日志管理工具 journalctl「建议收藏」

    Linux日志管理工具 journalctl「建议收藏」日志Linux日志管理基本概念journalctl查询所有系统服务日志内容journalctlmaybeusedtoquerythecontentsofthesystemd(1)journalaswrittenbysystemd-journald.service(8).CentOS7及以后版本,利用Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有系统日志查看内容包括内核日志

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号