首页 > 其他分享 >抽象类(abstract)和接口(interface)的区别

抽象类(abstract)和接口(interface)的区别

时间:2023-10-09 17:58:57浏览次数:42  
标签:继承 abstract 接口 抽象 interface 抽象类 方法

抽象类(abstract)和接口(interface)的区别

抽象类(abstract)

  • 只有方法名和参数,没有方法体
  • 抽象方法一般存在于抽象类中
    1. 有抽象方法的一定是抽象类
    2. 抽象类里不一定有抽象方法
    3. 抽象类被别的类继承(继承只能单继承),子类一定要重写抽象类中的抽象方法,如果子类也是抽象类则不用重写
    4. 抽象方法不能被static、final修饰,因为它需要被重写
    5. 不能被实例化,即不能new一个对象

接口(interface)

  • 用interface修饰,只有抽象方法和常量和引用数组类型
  • 接口可以被多实现(通俗说就是可以多继承)
  • 不能被实例化,即不能new一个对象
  • 接口中只能有抽象方法,没有构造方法
  • 接口里面只能有常量,并且不能私有化,默认是public static final型,且必须初始化,实现类中不能重新定义和修改值
  • 接口可以被接口继承 ,可以是多继承(先继承再实现)

抽象类和接口的区别

1.抽象类和接口都不能被实例化;

2.抽象类使用abstract修饰,接口用Interface修饰;

3.抽象类是单继承,一个类只能使用一次继承关系,继承用关键字extends;

接口可以多继承(extends)多实现(interface),多实现的时候用逗号(,)隔开;

4.抽象类里面可以有变量,变量可以私有化;

接口里只有常量,默认是public static final,不能被私有化,只能是公开的(public);

5.抽象类可以有抽象方法,只需要声明,无需实现;抽象方法不能声明为静态的,不能被static、final修饰;

接口里的方法都是抽象方法,但是都只是声明,并没有方法体,而且没有构造方法;

6.抽象类里面可以包含抽象方法和非抽象方法,抽象方法没有方法体,但是普通方法里面有方法体;有抽象方法的一定是抽象类,抽象类里不一定有抽象方法;一个类继承了抽象类,如果这个类实现了抽象类里面的所有抽象方法,那么该类可以不是抽象类,但是如果没有实现所有的抽象方法,那该类是抽象类

标签:继承,abstract,接口,抽象,interface,抽象类,方法
From: https://www.cnblogs.com/yinza181/p/17752479.html

相关文章

  • Programming abstractions in C阅读笔记:p166-p175
    《ProgrammingAbstractionsInC》学习第58天,p166-p175总结。一、技术总结1.斐波那契数列(FibonacciSequenc)(1)斐波那契数列来源斐波那契数列来自于《LiberAbaci》一书里兔子繁殖问题,相关资料很多,这里不赘述。(2)关于《LiberAbaci》一书《LiberAbaci》——Liber:abook......
  • JavaSE基础05(方法,重载,调用,类和对象,构造器,封装,继承,方法重写,抽象类,接口,异常)
    面向对象以类的方式组织代码,以对象的组织封装数据;一个Java文件只能有一个public类,必须和文件名一样;java文件里也可以没有public类; 方法的定义方法的使用,修饰符返回值类型方法名(参数类型参数名){方法体return返回值};参数类型包括:基本数据类型和引用数据类......
  • difference between a Client-Server and Sender-Receiver interface in Autosar
    thedifferencebetweenaClient-ServerandSender-ReceiverinterfaceinAutosarInaClient-Serverinterface,theclientrequestsaservicefromtheserverandtheserverrespondswitharesult.InaSender-Receiverinterface,thesendersendsdatatoone......
  • Java抽象类与接口的区别(略解)
    抽象类 接口抽象类与接口区别1.抽象类抽象类用abstract来修饰,例如:packagecom.test.abstractaaa;publicabstractclassTestAbstract{}抽象类是用来捕捉子类的通用性的,它不能被实例化,只能用作子类的超类,抽象类是被用来创建继承层级里子类的模板,例如JDK中......
  • 深入理解Java的接口与抽象类
    深入理解Java的接口和抽象类对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java......
  • 抽象类
    1.抽象类1.1抽象类概念在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类1.2抽象类语法在Java中,一个类如果被abstract修饰称为抽象类,抽象类中被abstract修......
  • typscript: AbstractFactory
     /***file:factory.ts*抽象工厂*TheAbstractFactoryinterfacedeclaresasetofmethodsthatreturn*differentabstractproducts.Theseproductsarecalledafamilyandare*relatedbyahigh-levelthemeorconcept.Productsofonefamilyare......
  • pyqt5-QAbstractButton抽象按钮类
    1、介绍QAbstractButton,抽象按钮类。该类定义了按钮类型组件的常用方法和事件,是QPushButton按钮组件、QCheckBox多选按钮组件、QRadioButton单选按钮组件的直接父类。另一方面,该类直接继承QWidget类。2、基础使用setText(self,text:str)设置文本text(self)->str获取......
  • 抽象类和接口
    1.引言接口和抽象类是面向对象编程中的两个概念,用于实现代码的抽象和封装。2.抽象类2.1定义抽象类(AbstractClass)是用于实现部分行为的类,它不能被实例化。抽象类可以包含普通方法、抽象方法(只有方法签名,没有具体实现)和属性,但抽象类中的抽象方法必须在子类中被实现。抽象类......
  • 【JAVA】关于抽象类的概念
    个人主页:【......