抽象类和接口的区别

这篇具有很好参考价值的文章主要介绍了抽象类和接口的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java是单继承和多实现

参数 抽象类 接口
声明 用abstract关键字声明 用interface关键字声明
实现 子类使用extends关键字来继承抽象类,如果子类不是抽象类的话,它需要提供抽象类中所有声明方法的实现 子类使用implements关键字来实现接口,它需要提供接口中所有声明方法的实现
构造器 可以有构造器 不能有构造器
访问修饰符 抽象类中的方法可以任意访问修饰符 接口方法默认修饰符是public,并且不允许定义为private或者protected
多继承 一个类最多只能继承一个抽象类 一个类可以实现多个接口
字段声明 可以是任意的 默认都是static和final的
实例化 不能 不能

都位于继承的顶端,用于被其他实现或继承

都包含抽象方法,其子类都必须覆写这些抽象方法

用来捕捉子类的通用特性

是抽象方法的集合

设计层面 是对类的抽象,是一种模板设计 是行为的抽象,是一种行为的规范
表示含义 这个对象是什么(is a) 这个对象能做什么(has)
侧重于描述事务 侧重于定义功能
属性 有普通属性,有静态属性(类属性) 没有普通属性,只有静态属性,只能用public final static修饰
方法 有普通方法,可以定义静态方法,也可以没有抽象方法 没有方法体,默认使用public abstract修饰,不能定义静态方法

备注:Java8接口中引入默认方法和静态方法,以此来减少抽象类和接口之间的差异。

现在,可以为接口提供默认实现的方法了,并且不用强制子类来实现它。

接口和抽象类选择上,遵循这样的原则:

  • 行为模型应该总是通过接口而不是抽象类定义,所以通常是优先选用接口,尽量少用抽象类。
  • 选择抽象类:需要定义子类的行为,又要为子类提供通用的功能

普通类和抽象类有哪些区别?

区别 抽象方法 实例化
普通类 不包含 可以直接
抽象类 包含 不能

抽象类能使用final 修饰吗?

不能,

定义抽象类是让其他类继承的,如果定义为final 该类就不能被继承,这样彼此就会产生矛盾,所以final 不能修饰抽象类

抽象类必须要有抽象方法吗?

不需要,抽象类不一定非要有抽象方法。

abstract class Cat{
    public static void sayHi(){
        System. out. println("hi~");
    }
}

抽象类并没有抽象方法但完全可以正常运行文章来源地址https://www.toymoban.com/news/detail-456247.html

到了这里,关于抽象类和接口的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java抽象类和接口的详细区别(全)

    这两者经常在笔试以及面试中经常问及,甚至在项目实战中还在纠结用哪一种类型 今天就此问题详细剖析一下 以往我的文章中也有稍微提及: java框架零基础从入门到精通的学习路线(超全) 此处将其这些文章抽离公共部分,详细总结下这两概念 抽象类是类和类之间的共同

    2024年02月08日
    浏览(42)
  • Java中抽象类和接口的区别,一文弄懂,图文并茂

    前言 1. 抽象类 1.1 定义 1.2 示例 1.3 使用 1.3.1代码-抽象类 1.3.2代码-抽象类继承类使用 1.3.3输出结果为: 1.4UML类图展示类间的关系 2. 接口 2.1 定义 2.2 示例 2.2.1代码-接口 2.3 使用 2.3.1代码-接口实现 2.3.2代码-接口实现类使用 2.3.3输出结果为: 2.4UML类图展示类间的关系 3. 抽象类和

    2024年02月04日
    浏览(48)
  • JavaSE:抽象类和接口

    目录 一、前言 二、抽象类 (一)抽象类概念 (二)使用抽象类的注意事项 (三)抽象类的作用 三、接口 (一)接口概念 (二)接口语法规则 (三)接口的使用  (四)接口特性 (五)实现多个接口 (六)接口间的继承  (七)使用接口给对象数组排序  (八)Clonabl

    2024年04月13日
    浏览(44)
  • JAVASE---抽象类和接口

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为

    2024年02月09日
    浏览(43)
  • JAVA-抽象类和接口

    文章目录 前言 1.1抽象类的概念 1. 2抽象类的语法 1.3抽象类的特性 1.3.1抽象类不能直接实例化对象 1.3.2抽象方法不能被private,final和static修饰 1.3.3 抽象类的子类要么也是抽象类,要么重写所有抽象方法 1.4抽象类的作用 2.1 接口的概念 2.2 语法规则 2.3 接口的使用  2.4 接口的特性

    2024年02月05日
    浏览(52)
  • Java——抽象类和接口

    目录 1.抽象类 1.概念: 2.语法  3.特性  2.接口   1.概念 2.语法  3.特性  在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是 抽象类 。 在这我们

    2024年04月12日
    浏览(51)
  • Java 抽象类和接口

    登神长阶 第三阶 抽象类和接口 🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀 目录 🐕‍🦺 一.抽象类 🐱1.定义及其作用 🦌2.语法 🦙3.特性 🦏4.意义 🦛二.接口  🐀1.定义及其作用 🦦2.语法 🦘3.具体使用 🐰4.特性 🫏5.多个接口的实现 🐻‍❄️6.接

    2024年03月18日
    浏览(52)
  • 【Java】抽象类和接口

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的, 如果一个类中没有包含足够的信息来描绘一个具体的对象,那么这样的类就是抽象类 在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法

    2024年02月05日
    浏览(47)
  • 【javaSE】抽象类和接口(2)(接口部分)

    hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥💥,如果发现这篇文章有问题的话,欢迎各位评论留言指正,大家一起加油!一起chin up!👍👍  💥 个人主页 :E绵绵的博客 💥 所属专栏 :JAVASE题目练习

    2024年04月28日
    浏览(37)
  • Java抽象类和接口【超详细】

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的, 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类 。 比如: 在打印图形例子中, 我们发现, 父类 Shape 中的 draw 方法好像并没有什么实际

    2024年02月14日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包