首页 > 试题广场 >

abstract class和interface有什么区别?

[问答题]
请你讲讲abstract class和interface有什么区别?
抽象类可以有构造方法,接口不可以, 抽象类中可以有非抽象的方法,接口不可以, 抽象类有普通成员变量,接口不可以, 抽象类是单继承,接口是多实现
发表于 2019-04-28 17:51:03 回复(0)
更多回答
抽象类和接口中,都有抽象方法需要实现,他们都不能创建实例对象,区别是:
1、抽象类可以有构造方法、普通成员变量、普通方法,但接口不行。
2、抽象类和接口都可以包含静态成员变量、静态方法,抽象类中的静态成员变量可以是任意访问类型,但接口必须是public(Java8支持default)。
3、抽象类的抽象方法的访问类型可以是public、protected,但接口必须是public。
4、一个类可以实现多个接口,但只能继承一个抽象类。

发表于 2019-03-27 19:41:59 回复(0)
抽象类是 is-a的关系 接口是 has-a的关系
发表于 2019-03-25 11:30:44 回复(0)
jdk1.8之后 接口中可以有带default关键字的方法
发表于 2019-03-04 10:32:16 回复(0)
相同:都不能实例化,可以指定引用;一个类实现了接口或继承了抽象类,必须重写抽象方法! 不同:接口是比抽象类更为抽象,抽象类可以有抽象方法和普通方法,可以有常量或普通变量,接口中只有抽象方法和常量
发表于 2019-01-30 12:04:34 回复(0)
抽象类可以有构造方法,普通成员变量和静态方法,而接口中没有;
抽象类只能被单一继承,而接口可以多重实现;
一个类可以实现多个接口,但只能继承一个抽象类;
抽象类中的抽象方法可以是public,Procted类型和默认类型,接口中只能是public类型;
接口中的方法都是抽象方法;

发表于 2019-09-04 17:01:47 回复(0)

interface需要实现,要用implements,而abstract class需要继承,要用extends。

一个类可以实现多个interface,但一个类只能继承一个abstract class。

interface强调特定功能的实现,而abstract class强调所属关系。

尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的 (declaration, 没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。

发表于 2019-05-05 09:31:02 回复(0)
抽象类中可以有属性,普通方法,构造方法,而接口不能,抽象类与接口都不能实例化
发表于 2019-04-26 20:48:15 回复(0)
抽象类中可以有构造方法,成员变量,接口中不可以。一个类可以实现多个接口但只能继承一个抽象类
编辑于 2019-04-26 20:14:26 回复(0)
interface是接口,所有的方法都是抽象方法,成员变量是默认的public static final 类型。接口不能实例化自己。
abstract class是抽象类,至少包含一个抽象方法的累叫抽象类,抽象类不能被自身实例化,并用abstract关键字来修饰
发表于 2019-04-25 19:38:00 回复(0)

a. 抽象类可以有构造方法,接口中不能有构造方法。

b. 抽象类中可以有普通成员变量,接口中没有普通成员变量。

c. 抽象类中可以包含非抽象普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的方法。

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

e. 抽象类中可以包含静态方法,在 JDK1.8 之前接口中不能不包含静态方法,JDK1.8 以后可以包含。

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

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

发表于 2019-04-25 19:33:04 回复(0)
相同点:抽象类和接口的抽象方法都必须被实现 不同点: 1.抽象类里可以有普通方法和属性,但接口只能有抽象方法。 抽象类的抽象方法可以被public,protected,private修饰,而接口只能被public修饰,Java8支持default。
发表于 2019-03-07 14:28:07 回复(0)
抽象类可以有构造方法,普通成员变量和静态成员变量,可以有普通方法或抽象方法,方法可被public,protected,private修饰,一个类只能继承一个抽象类。 接口不能有构造方法,只能有静态常量,默认被static final修饰,接口中的方法必须是抽象方法,默认被public修饰,一个类可以继承多个接口。
编辑于 2019-03-05 23:02:32 回复(0)