首页 > 试题广场 >

Abstract class和interface有什么区别

[问答题]
Abstract class和interface有什么区别?
推荐
相同点:
  A. 两者都是抽象类,都不能实例化。
  B. interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。
不同点:
2. 不同点
  A. interface需要实现,要用implements,而abstract class需要继承,要用extends。
  B. 一个类可以实现多个interface,但一个类只能继承一个abstract class。
  C. interface强调特定功能的实现,而abstract class强调所属关系。 
  D. 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的 (declaration, 没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。
编辑于 2017-05-24 13:53:50 回复(0)
接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,

另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。

还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.
发表于 2017-02-05 20:46:05 回复(0)

 

Abstract class

Interface

实例化

不能

不能

一种继承关系,一个类只能使用一次继承关系。可以通过继承多个接口实现多重继承

一个类可以实现多个interface

数据成员

可有自己的

静态的不能被修改即必须是static final,一般不在此定义

方法

可以私有的,非abstract方法,必须实现

不可有私有的,默认是publicabstract 类型

变量

可有私有的,默认是friendly 型,其值可以在子类中重新定义,也可以重新赋值

不可有私有的,默认是public static final 型,且必须给其初值,实现类中不能重新定义,不能改变其值。

设计理念

表示的是“is-a”关系

表示的是“like-a”关系

实现

需要继承,要用extends

要用implements

发表于 2020-06-22 00:11:00 回复(0)
不能实例化。interface中的方法不写大括号。抽象类的继承可以有选择的重写方法,interface必须全部实现。 接口是公开让人使用的,里面不能有私有变量私有方法,抽象类可以有。 接口变量默认为 public staic final 方法默认为 public abstract
编辑于 2020-03-05 22:24:29 回复(0)
Abstract class 抽象类, 可以包含抽象方法和非抽象方法, 包含抽象方法的类必须是抽象类,可以包含普通属性,只能被单继承
interface 接口,只能包含抽象方法,默认方法和静态方法。一个类可以实现多个接口,属性默认是public static final的,方法默认是public abstract的
发表于 2017-08-01 14:48:03 回复(0)
抽象类和接口的区别:比喻为亲爹和干爹的区别,抽象类是亲爹,接口是干爹,一个实现类只能有一个亲爹,但是可以有多个干爹;(java8中,接口中的方法也可以有方法体)
发表于 2017-08-01 08:54:41 回复(0)
两者都是抽象类?这是公司参考答案,这公司能进?
发表于 2017-07-31 22:17:19 回复(0)
Abstract class中可以有方法体,但interface中不能有。
Abstract class不能多继承,但interface可以多继承。
发表于 2017-07-31 19:06:25 回复(0)
共同点:(1)Abstract class和interface都不能被实例化;
               (2)接口的实现类或抽象类的子类只有实现了接口或抽象类中的方法后才能被实例化。
不同点:(1)接口中只有定义,其方法不能在接口中实现;抽象类中可以有定义和方法;
               (2)interface需要实现(implement),Abstract class需要被继承,一个类可以实现多个接口,但只能继承一个抽象类;
               (3)interface强调特定用能的实现,设计理念是has-a,Abstract class强调所属关系,设计理念是is-a;
               (4)interface中定义的成员变量默认为public static final ,只能够有静态的不能修改的数据成员;而且必须赋给初值,
                        interface中的所有成员方法都是 public、abstract,且只能被这两个修饰;
                         Abstract class中可以有自己的数据成员,也可以有非抽象方法,
                       Abstract class定义的成员变量默认为default,也可以为 private,public等,
                          Abstract class方法前必须有abstract修饰,不能和private,static,synchronize,native一起修饰。
                (5)interface被用于实现常用的功能,方便维护;Abstract class用于公共类的角色。
发表于 2017-07-30 11:46:12 回复(0)