接口类与抽象函数类的区别 抽象类是否可继承实体类 ?

1.virtual:允许被重写,但不强制要求。声明时提供其自身实现;
2.abstract:强制要求其继承者重写。声明时不提供其自身的实现,抽象类不能被实例化;

3.interface:接口就是协议,其声明的成员(属性,方法,事件和索引器)必须由其继承的类实现。接口不能直接被实例化。

   ---------------------------------------------------------------------------------------------------------------

虚方法与抽象方法的区别在于:

虚方法提供自身的实现,并且不强制要求子类重写;

而抽象方法不提供自身的实现,并且强制子类重写。

   ---------------------------------------------------------------------------------------------------------------

抽象和接口的比较:

抽象类与接口很相似,但是思路不一样。接口是公开类的成员,而抽象类则是抽象类成员以要求子类继承并实现。

抽象类

扫描二维码关注公众号,回复: 2586539 查看本文章

接口

1

使用abstract关键字来定义抽象类。

使用interface关键字来定义接口。

2

在抽象类中可以定义抽象方法,也可以定义非抽象方法。

在接口中只能定义默认的抽象方法,不能定义非抽象的方法。

接口实际上是一个纯抽象类。

3

在抽象类中定义的抽象方法,没有方法体。

在接口中定义的方法,没有方法体。

4

在抽象类中能定义常量、变量、静态方法和构造函数。

在接口中只能定义静态常量和实例方法,不能定义实例常量、静态变量、实例变量、静态方法和构造函数。

5

抽象类本身不提供它所定义的抽象方法的实现。

抽象类能被继承,由它的子类来实现在抽象类中定义的所有抽象方法。

接口本身不提供它所定义的方法的实现。

接口能被实现,由它的实现类来实现在接口中定义的所有方法。

6

在子类中必须覆盖它的抽象类定义的所有抽象方法。

在实现类中必须实现它的接口定义的所有方法。

7

抽象类可以从另一个抽象类继承。

接口可以从另一个接口继承。

8

当一个抽象类继承于另一个抽象类时,可以不用实现在基类(抽象类)中定义的抽象方法。

当一个接口继承于另一个接口时,不用也不能实现它的父接口中定义的方法,因为在接口中定义的方法是隐式的抽象方法,是没有方法体的。

9

抽象类不能实例化。

接口不能实例化。

10

定义抽象类时不能使用final关键字。

定义接口时不能使用final关键字。

11

一个类只能继承一个抽象类。

一个类可以实现多个接口。

 

(1) 抽象类主要用作基类,共享某些公共的成员和行为。

(2) 接口主要用于类,在接口中定义这些类都具有的功能

(3) 好的接口定义应该具有专一功能性的,而不是多功能的,否则造成接口污染。如果一个类只需要实现接口中的一个功能,而不得不去实现接口中的其它方法,这就叫接口污染。

(4) 抽象类主要用于一系列关系密切的对象;而接口适合为不相关的类提供通用功能。

 --------------------------------------------------------------------------------------------------

示例1

飞机会飞,鸟会飞,F22战斗机属于飞机(抽象类),鸽子属于(抽象类),但它们都实现了同一个接口“飞”。

示例2

就像铁门和木门都是(抽象类),你想要门,我给不了(抽象类不能实例化),但我可以给你个具体的铁门或木门(多态性);而且只能是门,你不能说它是窗(单继承);一个门可以有(接口),也可以有门铃(另一个接口,多实现)。门(抽象类)定义了是什么,锁(接口)规定了能做什么,一个接口最好只能做一件事,你不能要求锁也发出声音(接口污染)

 --------------------------------------------------------------------------------------------------

抽象类是否可继承实体类 ?


答案是可以。

解释:

  请参考:https://blog.csdn.net/qq_36098284/article/details/80751927

 --------------------------------------------------------------------------------------------------

接口是否可继承接口抽象类是否可实现(implements)接口

答案:接口可以继承接口,抽象类可以实现接口。

 --------------------------------------------------------------------------------------------------

抽象类中是否可以有静态的main方法?

答案:抽象类中可以有静态的main方法。抽象类中的参数可以包括,常量,变量,静态方法和构造函数。但是接口只能包含静态常量和实例方法,不可以包含静态变量,实例常量,实例变量和构造函数。

 --------------------------------------------------------------------------------------------------

参考:https://blog.csdn.net/tiancaixuchao2009/article/details/7207222

猜你喜欢

转载自blog.csdn.net/qq_36098284/article/details/80751701