接口是对动作的抽象,抽象类是对根源的抽象

1.抽象类是一个不完全的类,需要进一步专业化.接口只是一个行为的规范或规定;     
  2.接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法;     
  3.一个类一次可以实现若干个接口,但是只能扩展一个父类     
  4.接口可以用于支持回调,而继承并不具备这个特点.

接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。

抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。

人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.

所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

第一点. 接口是抽象类的变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。
第二点. 接口可以多继承,抽象类不行
第三点. 接口定义方法,不能实现,而抽象类可以实现部分方法。
第四点. 接口中基本数据类型为static 而抽类象不是的。

当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。

抽象类的功能要远超过接口,但是,定义抽象类的代价高。因为高级语言来说(从实际设计上来说也是)每个类只能继承一个类。在这个类中,你必须继承或编写出其所有子类的

所有共性。虽然接口在功能上会弱化许多,但是它只是针对一个动作的描述。而且你可以在一个类中同时实现多个接口。在设计阶段会降低难度的。

注意的地方:

如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单易行的方法来控制组件版本。通过更新基类,所有继承类都随更改自动更新。另一方面,接口一旦创建就不能更改。如果需要接口的新版本,必须创建一个全新的接口。     
  如果创建的功能将在大范围的全异对象间使用,则使用接口。抽象类应主要用于关系密切的对象,而接口最适合为不相关的类提供通用功能。     
  如果要设计小而简练的功能块,则使用接口。如果要设计大的功能单元,则使用抽象类。     
  如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。抽象类允许部分实现类,而接口不包含任何成员的实现。

时间: 2024-10-17 04:46:02

接口是对动作的抽象,抽象类是对根源的抽象的相关文章

tomcat监控脚本(监控进程,测试接口,告警动作为发送邮件)

服务器环境:centos7.2 64位 tomcat8.5.6 tomcat 监控功能共需要两个脚本,如下: initMonitor.sh #!/bin/sh #初始化监控脚本相关变量 export tomcat_name=apache-tomcat-8.5.6 export tomcat_home=/usr/local/apache-tomcat-8.5.6 #测试接口访问地址 export webUrl=127.0.0.1:8080/yanglao/sysUserController/sys

JavaSE8基础 抽象类中可以有 非抽象的成员方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: //抽象类中可以有 普通的成员方法 abstract class Person { //非抽象方法 public void sayHello(){ } //抽象方法 public abstract void study(); } class Demo { public static void main(Str

谈谈到底什么是抽象,以及软件设计的抽象原则

我们在日常开发中,我们常常会提到抽象.但很多人常常搞不清楚,究竟什么是抽象,以及如何进行抽象.今天我们就来谈谈抽象. 什么是抽象? 首先,抽象这个词在中文里可以作为动词也可以作为名词.作为动词的抽象就是指一种行为,这种行为的结果,就是作为名词的抽象.Wikipedia 上是这么定义抽象的: Conceptual abstractions may be formed by filtering the information content of a concept or an observable

多态是什么:抽象类型可以泛化为多样化不同的类型----多态的本意:是抽象类型具体实现的多样化---抽象类型的指代作用

多态的本意:是抽象类型具体实现的多样化: 然后对具体类型的行为,作出或相同或不同的解释: 多态是一个类型理论的名词:对抽象类型的行为作出了解释: 抽象类型的指代作用举例: 这个牛是一头白牛,这个牛(这头白牛)........ The most commonly recognised major classes of polymorphism are: Ad hoc polymorphism: defines a common interface for an arbitrary set of i

接口和抽象类有什么区别

你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样.接口是对动作的抽象,抽象类是对根源的抽象. 抽象类表示的是,这个对象是什么.接口表示的是,这个对象能做什么.比如,男人,女人,这两个类(如果是类的话--),他们的抽象类是人.说明,他们都是人. 人可以吃东西,狗也可以吃东西,你可以把"吃东西"定义成一个接口,然后让这些类去实现它. 所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口.走路接口). 第一点. 接

接口和抽象类的区别

1.接口和抽象类的概念是不一样的.接口是对动作的抽象,表示的是这个对象能做什么,比如人可以吃东西.狗也可以吃东西,只要有相同的行为:抽象类是对根源的抽象,表示的是这个对象是什么,比如男人是人.女人也是人 2.可以实现多个接口,只能继承一个抽象类 3.接口中只能定义抽象方法,抽象类中可以有普通方法 4.接口中只能有静态的不能被改变的数据成员,抽象类可以有普通的数据成员

抽象类和接口联系与区别

1.抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象. 2.抽象类要被子类继承,接口要被类实现. 3.接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现 4.接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量. 5.抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类.同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类. 6.

java 接口和抽象类的区别

接口和抽象类的区别:1,接口里不能定义私有的方法/变量,抽象类可以但抽象类如果定义了私有变量,一般会定义一个共有方法来使用这个变量不然这个变量就没有意义了private String name:public void setName(String name){ this.name = name;}public String getName(){ return name;}2,接口里定义的方法没有方法体(除非定义为public/default) 抽象类定义的方法有方法体3,接口定义的方法需要全部被

C#.NET里面抽象类和接口有什么区别

1.面向接口编程和面向对象编程是什么关系 首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分.或者说,它是面向对象编程体系中的思想精髓之一. 2.接口的本质 接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承).它在形式上可能是如下的样子: interface InterfaceName {     void Method1();     void