首页

文章

abstract class和interface有什么区别

发布网友 发布时间:2022-04-20 02:01

我来回答

5个回答

热心网友 时间:2023-09-09 21:45

1、构造方法不同:

抽象类可以有构造方法,接口中不能有构造方法。抽象类中可以有普通成员变量,接口中没有普通成员变量。抽象类中可以包含非抽象普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的方法。

2、访问权限不同:

抽象类中的抽象方法的访问权限可以是 public、protected 和(默认类型,虽然 eclipse 不报错,但也不能用,默认类型子类不能继承),接口中的抽象方法只能是 public 类型的,并且默认即为 public abstract 类型。

3、变量类型不同:

抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问权限可以是任意的,但接口中定义的变量只能是 public static final 类型的,并且默认即为 public static final 类型。

4、书写规范不同:

一个类可以实现多个接口,用逗号隔开,但只能继承一个抽象类,接口不可以实现接口,但可以继承接口,并且可以继承多个接口,用逗号隔开。

参考资料来源:百度百科-interface

参考资料来源:百度百科-abstract(抽象修饰符)

热心网友 时间:2023-09-09 21:45

区别如下:

1、继承关系:abstract class抽象类可以继承一个类和实现多个接口;子类只可以继承一个抽象类。Interface接口只可以继承接口(一个或多个);子类可以实现多个接口。

2、访问修饰符:abstract class抽象方法可以有public、protected和default这些修饰符。Interface接口方法默认修饰符是public。你不可以使用其它修饰符。

3、方法实现:abstract class可定义构造方法,可以有抽象方法和具体方法。Interface接口完全是抽象的,没构造方法,且方法都是抽象的,不存在方法的实现。

4、实现方式:abstract class子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。Interface子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现。

5、作用:abstract class把相同的东西提取出来,即重用。Interface为了把程序模块进行固化的契约,是为了降低偶合。

扩展资料

abstract class的定义:

含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。

abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。

interface的定义:

接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。

参考资料来源:百度百科——abstract class

参考资料来源:百度百科——interface

热心网友 时间:2023-09-09 21:46

区别如下:

1、定义:包含抽象方法的的类是abstract class,用abstract关键字修饰。Interface比abstract class更加抽象,是一种特殊的abstract class,用Interface关键字修饰。

2、作用:abstractclass是为了把相同的东西提取出来,即重用。Interface是为了把程序模块进行固化的契约,是为了降低偶合。

3、继承:abstract class抽象类可以继承一个类和实现多个接口;子类只可以继承一个抽象类 。Interface接口只可以继承接口(一个或多个);子类可以实现多个接口。

4、访问修饰符:abstract class抽象方法可以有public、protected和default这些修饰符;Interface接口方法默认修饰符是public。不可以使用其它修饰符。

5、方法实现:abstract class可定义构造方法,可以有抽象方法和具体方法;Interface接口完全是抽象的,没构造方法,且方法都是抽象的,不存在方法的实现。

6、实现方式:abstract class子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现;Interface子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现。

实例:

下面以定义一个名为Demo的抽象类为例来说明这种不同。

1、使用abstract class的方式定义Demo抽象类: 

2、使用interface的方式定义Demo抽象类: 

扩展资料:

1、抽象类(abstract class)和接口(Interface)是Java语言中对于抽象类定义进行支持的两种机制,赋予了Java强大的面向对象能力。

2、抽象类运用意义

在面向对象方法中,抽象类主要用来进行类型隐藏。构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。

这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。

由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;同时,通过从这个抽象体派生,也可扩展此模块的行为功能。为了能够实现面向对象设计的一个最核心的原则OCP(Open-Closed Principle),抽象类是其中的关键所在。

参考资料:百度百科-Abstract class

参考资料:百度百科-interface

参考资料:百度百科-抽象类

热心网友 时间:2023-09-09 21:47

1、继承的区别

抽象类abstract class可以继承一个类和实现多个接口,子类只可以继承一个抽象类。接口Interface只可以继承接口(一个或多个),子类可以实现多个接口。

2、变量的区别

abstract class可有私有的,默认是friendly型,其值可以在子类中重新定义,也可以重新赋值。interface不可有私有的,默认是public static final型,且必须给其初值,实现类中不能重新定义,不能改变其值。

3、实现方式的区别

抽象类abstract class:子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。接口Interface:子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现。

4、应用的区别

接口interface更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类abstract class在代码实现方面发挥作用,可以实现代码的重用。

参考资料:

百度百科:Abstract class

百度百科:interface

热心网友 时间:2023-09-09 21:47

abstract class 在Java中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。

一、在abstract class 中可以有自己的数据成员,也可以有非abstarct的方法。而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的。不过在 interface中一般不定义数据成员),所有的方法都是public abstract的。

抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。接口中定义的变量默认是public static final 型,且必须给其赋初值,所以实现类中不能重新定义,也不能改变其值。

二、abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。 

实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。

三、abstract class 和 interface 是 Java语言中的两种定义抽象类的方式,它们之间有很大的相似性。但是对于它们的选择却又往往反映出对于问题领域中的概念本质的理解、对于设计意图的反映是否正确、合理,因为它们表现了概念间的不同的关系。

扩展资料:

一、含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。

二、abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。

三、接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。

参考资料:百度百科—abstract class

华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 为什么抽象类可以设置成员变量 ,而普通类不可以? java中抽象类和接口有什么区别? 在java中,接口和抽象类的异同 java 抽象类中可以定义哪些成员变量和函数 手机宣传上厂商标注的IP68是什么意思? 给同学的评语 给同学的赠言 给同学的祝福 毕业留言给同学 给同学什么礼物 事业单位职级晋升需要看党表吗 蒸煮螃蟹时水开后至少还要再煮多少分钟,才可能把... 螃蟹煮几分钟最好 蒸煮螃蟹时水开后至少还要煮多少分钟,才能将螃蟹... 哪里能买到冰墩墩玩偶多少钱 冰墩墩硅胶挂坠多少钱一个? 冰墩墩钥匙扣多少钱一个? 紫砂壶适合泡什么茶? 黄段泥紫砂壶用什么茶叶养好 求教 段泥石瓢适合泡什么茶 java为什么既有接口又有抽象类 java中抽象类和接口有什么区别 Java的抽象类和接口里能不能有静态成员和静态方法? abstract类中可以有private的成员变量和方法说法正... java抽象类中可以声明变量吗?能赋初值吗? Java抽象类中定义了抽象方法还可以定义一般方法吗? 关于抽象类和静态成员变量的问题? 抽象类和接口的区别、为什么用抽象类。 java中的抽象类中的方法必须是抽象方法么?其中的... JAVA可以抽象成员变量吗? PS里怎样抠图? 如何评价西班牙爱情电影《天空之上三公尺》? 跪求天空之上三公尺2电影,最好双语的 有哪些可以带我们了解西班牙文化的电影? 意大利小说《天空上三公尺》,和西班牙电影《天空... 有人知道“天空上三公里”的意思吗? 天空上三公尺 中的插曲 是什么 就是他们跳舞的时候... 有谁知道这部电影叫什么名字? 急!! 小米平板1支持多大内存卡 小米平板1为什么,USB调试能充电却不能显示
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com