抽象类和接口的对比

LXQLCCC LXQLCCC     2022-08-14     325

关键词:

抽象类和接口的对比

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

什么时候使用抽象类和接口

  • 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
  • 如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
  • 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。

 

对于抽象类与抽象方法的限制如下: 

(1)凡是用abstract 修饰符修饰的类被称为抽象类。凡是用abstract修饰符修饰的成员方法被称为抽象方法。
 

(2)抽象类中可以有零个或多个抽象方法,也可以包含非抽象的方法。
 
(3)抽象类中可以没有抽象方法,但是,有抽象方法的类必须是抽象类。
 
(4)对于抽象方法来说,在抽象类中只指定其方法名及其类型,而不书写其实现代码。
 
(5)抽象类可以派生子类,在抽象类派生的子类中必须实现抽象类中定义的所有抽象方法。
 
(6)抽象类不能创建对象,创建对象的工作由抽象类派生的子类来实现。
 
(7)如果父类中已有同名的abstract方法,则子类中就不能再有同名的抽象方法。
 
(8)abstract不能与final并列修饰同一个类。
 
(9)abstract 不能与private、static、final或native并列修饰同一个方法。

 

抽象类和接口的区别

抽象类和接口的对比参数抽象类接口默认的方法实现它可以有默认的方法实现接口完全是抽象的。它根本不存在方法的实现实现子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方... 查看详情

抽象类和接口的区别

抽象类和接口的对比参数抽象类接口默认的方法实现它可以有默认的方法实现接口完全是抽象的。它根本不存在方法的实现实现子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方... 查看详情

抽象类与接口对比

对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际... 查看详情

抽象类和接口的区别

抽象类和接口的区别一、抽象类与接口的相同之处  1、抽象类和接口都不能被实例化,都用于被其他类实现或继承  2、他们都可以包含抽象方法,并且在其他类继承或实现的时候都必须实现这些抽象方法 二、抽象类与... 查看详情

关于类抽象类和接口的继承关系

关于类、抽象类和接口的继承关系一、类和抽象类当实体类Impl继承一个抽象类Abstract,该实体类Impl可以不用实现抽象类Abstract中的所有方法,但是必须实现抽象类中的所有抽象方法。 二、类和接口当实体类Impl直接实现接口In... 查看详情

抽象类和接口

区别:1.抽象类要被子类继承,接口要被类实现;2.接口只能作方法声明,抽象类中既可以作方法声明,也可以作方法实现;3.接口里定义的变量只能是公共的静态的常量(publicstaticfinal修饰),而抽象类中的变量是普通变量;4.接... 查看详情

抽象类和接口的区别

1.抽象类中可以有普通成员变量,接口中没有普通成员变量。2.抽象类和接口中都可以包含静态成员变量,抽象类中静态成员变量的访问类型是任意的,接口中必须为(publicstaticfinal)(默认)。3.抽象类可以包含非抽象的普通方法,接... 查看详情

抽象类和接口

当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。 1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方... 查看详情

抽象类和接口在一起?

】抽象类和接口在一起?【英文标题】:Abstractclassandinterfacetogether?【发布时间】:2013-05-1422:12:30【问题描述】:我有一段代码,其中一些类正在实现接口。感觉是对的,但是子类之间有一点重复——即3个方法。所以这是在尖叫... 查看详情

抽象类和接口

1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。2、抽象类要被子类继承,接口要被类实现。3、接口只能做方法申明,抽象... 查看详情

抽象类和接口

问题出现:我们在使用C#的抽象类和接口的时候,往往会遇到以下类似的问题,大致归纳如下:(1)抽象类和接口有什么本质的区别和联系?(2)什么时候选择使用抽象类,然啥时候使用接口最恰当呢?(3)在项目中怎样使用才能使得项... 查看详情

抽象类和接口的区别

...虑  1.成员变量:接口的成员变量默认publicstaticfinal,抽象类成员变量和普通类一样  2.构造方法:接口没有构造方法  3.成员方法:接口的成员方法默认publicabstract,有抽象方法的类一定是抽象类,抽象类不一定有抽象方... 查看详情

抽象类和接口的区别

接口和抽象类的区别:1.接口的所有方法都是抽象的,抽象类里面的方法可以是抽象的也可以不是抽象的;2.接口和抽象类都不能实例化,接口需要类来实现后实例化实现类,抽象类需要类来继承然后实例化子类;3.抽象类只能单... 查看详情

抽象类和接口区别

简述抽象类和接口区别 ①   Abstract修饰符:抽象类不能省略;接口省略②   子类和实现类:抽象类的子类继承抽象类,单继承;接口的实现类实现接口,多实现;③   继承:抽象类单继承;... 查看详情

抽象类和接口

接口是一种特殊的抽象类接口和抽象类的不同点:  1.抽象类中可以有实例属性;而接口中没有实例属性,Java虚拟机会自动给接口的加上publicstaticfianl修饰符,都是公开的静态常量  2.抽象类中可以有实例方法;而接口中没... 查看详情

抽象类和接口(代码片段)

抽象类和接口抽象类抽象类概念抽象类形式抽象类特征引出接口接口1.接口简介定义2.接口特性接口间的继承抽象类抽象类概念在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都... 查看详情

抽象类和接口(代码片段)

抽象类和接口抽象类抽象类概念抽象类形式抽象类特征引出接口接口1.接口简介定义2.接口特性接口间的继承抽象类抽象类概念在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都... 查看详情

抽象类和接口

1、abstractclass抽象类抽象类的定义:1、类中至少有一个抽象方法2、抽象方法不允许有{}3、抽象方法前面必须要加abstract抽象类的使用必须同时满足以下2个条件:1.只能在被继承的时候;2.所有的抽象方法必须重载使用。抽象类例... 查看详情