面向对象基础之抽象类与接口 下

在上篇博文中我们一起了解了抽象类,那么什么是接口呢?下面给大家简单介绍一下:

所谓接口,就是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式,因此接口不能实例化,不能有构造方法和字段,不能有修饰符,如public等。在实现接口的类中必须实现接口中的所有方法和属性。

一个接口可以支持多个接口,多个类也可以支持相同的接口。需要注意的是,接口用interface关键字来声明,而不是class,接口的名称前要加大写字母I,接口中的方法或者属性前面不能有修饰符,方法没有方法体。

那么在C#中,接口又是如何来定义声明呢?请往下看

Interface 接口名称

{

返回类型 方法名称(参数列表);

}

有人可能会觉得说了这么多,还是不明白抽象类和接口到底是什么关系,别担心,最后给大家总结一下,抽象类和接口的区别。

从表面上来讲,抽象类可以给出一些成员的实现,接口却不包含成员大的实现,抽象类的抽象成员可被子类部分实现,接口的成员需要实现类完全实现,一个类只能继承一个抽象类(C#没有多重继承),但是可以实现多个接口等等。具体的我们可以从三点去加以区分:

第一,  类是对对象的抽象,抽象类是对类的抽象,而接口是对行为的抽象;

第二,  如果行为跨越不同类的对象,可以使用接口,对于一些相似的类对象,用继承抽象类;

第三,  从设计角度讲,抽象类是从子类中发现了公共的东西,将其抽象出父类,然后子类继承父类,而接口是根本不知道子类的存在,方法是如何实现并不知道,因此预先定义的。

以上就是对于抽象类和接口的总结和分析,个人在学习的时候,最大的顿悟就是原来接口就是对各种类的行为的抽象,这点一下点醒了我,之前的理解真的很不到位,只是从接口的形式上去认识它,认为它既是一组方法的集合,仅此而已。

当然这些都是从理论知识的角度去理解抽象类和接口的,在以后的学习过程中必将还会遇到他们,尤其是在做工程项目的时候,大量使用抽象类和接口,肯定会对他们有一个更加深刻的理解,学习是一个循序渐进的过程。

面向对象基础之抽象类与接口 下,布布扣,bubuko.com

时间: 2024-08-08 05:38:55

面向对象基础之抽象类与接口 下的相关文章

面向对象基础之抽象类与接口 上

在两年前学习C++的时候,知道抽象类这么一个概念,当时并不是很理解,如今在学习C#和设计模式的时候,再一次碰到了这个含糊不清的东西,同时又在C#中学习到了接口技术,接口也早有耳闻,但是当时理解的接口就是一个或者一组能够操作类中数据的函数或者方法.虽然老师举过很多例子,比如电视机这个事物,它对外的接口就是遥控器,遥控器里好多的按钮,按钮的下面就是各种各样的命令或者称之为方法. 当抽象类遇到接口的时候,顿时蒙圈了,这两个概念的确是让人很难区别,那么我今天就来总结一下抽象类和接口到底有哪些区别和联系,

java面向对象编程(八)--抽象类、接口

1.抽象类 1.1抽象类概念 当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]. //抽象类的必要性[Demo124.java] public class Demo124 { public static void main(String[] args) { //Animal an=new Animal();抽象类不允许实例化 Animal an=new Cat(); an.cry(); an=new Dog(); an.cr

黑马程序员——Java基础——面向对象——继承、抽象类、接口、多态、包、内部类、异常等

第一讲 继承 1.继承: 当多个类拥有相同的功能时,那么这些类不需要每个都写这些相同的功能,只需要把相同功能抽到 一个单独的类中,继承这个类就能获得这些相同的功能: (1)继承的体系结构:就是对要描述的事物进行不断的向上抽取,就出现了体系结构. 要了解这个体系结构中最共性的内容,就看最顶层的类. 要使用这个体系的功能,就用最底层的类创建对象 (2)好处: A.提高代码复用性: B.继承的出现,让类与类之间产生关系,为多态的前提 (3)特点: A.只能单继承(准确的说是java对多继承进行优化,避

java基础知识--抽象类与接口

抽象类与接口 1.Java 抽象类 1.引言: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象, 这样的类就是抽象类. 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量.成员方法和构造方法的访问方式和普通类一样. 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用.也是因为这个原因,通常在设计阶段决定要不要设计抽象类. 2.在Java语言中使用abstract class来定义

《Java技术》第三次作业--面向对象——继承、抽象类、接口

一)学习总结 1.阅读下面程序,分析是否能编译通过?如果不能,说明原因.应该如何修改?程序的运行结果是什么?为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来? class Grandparent { public Grandparent() { System.out.println("GrandParent Created."); } public Grandparent(String string) { System.out.println("Gran

Java基础:抽象类和接口

一.引言 基于面向对象五大原则中的下面两个原则,我们应该多考虑使用接口和抽象类: 里氏替换原则:子类可以通过实现父类接口来替换父类,所以父类应尽可能实现为接口/抽象类,方便拓展程序而不影响现有代码. 依赖倒置原则:和结构化设计不同,我们要让底层依赖于高层,而不是相反. 而设计接口和抽象类时尽量遵循面向对象五大原则中的"接口隔离原则",即使用专门接口比使用单一接口好.这个准则和针对类设计的"单一职责原则"对应. 备注:设计模式中有很多和接口和抽象类相关的模式,比如抽象

面向对象设计中抽象类与接口的区别

在OOD(面向对象设计)中,经常会用到抽象类或接口,[注:在C++中,没有接口的概念,只有抽象类:而在Java中两者都存在].而在使用过程中,也许会有不少人认为接口和抽象类差不多,然后就想当然地觉得可以相互完全替换.事实上,虽然他们有很多相似点,但也有很大差异. 1.抽象类与接口的出现条件 在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样.并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类.抽象类往往用来表征我们

java基础之抽象类与接口的区别

在学习java的过程中,或者是在找工作笔试或面试的时候,如果你是java岗位,那么抽象类与接口的区别无疑是一个大热点,是各大公司都想要考的一个小知识点,下面是我为了9月份秋招自己总结的,若有不对的地方,欢迎指正. 此处,借鉴了http://www.cnblogs.com/dolphin0520/p/3811437.html,写的很不错. 一.抽象类 使用了abstract关键字所修饰的类叫做抽象类.抽象类无法实例化,也就是说,不能new出来一个抽象类的对象(实例). 抽象方法:使用abstrac

面向对象 多态、抽象类和接口

今天,我主要学习了多态.抽象类和接口的部分内容. 在实际的操作中,同样都是继承了同一个父类,但是父类中的方法并不适用任何一个子类,那么在这就需要子类重新编写这个方法的主体. 在重写成员方法时,需要父类同意子类可以重新编写自己的方法:virtual -  虚方法:子类只能重写父类允许重写的方法,只能重写虚方法:override - 重写覆盖虚方法. 基类与派生类是相对的,所有的类都可以当做父类,都可以有虚方法. 抽象类:abstract 抽象类就是为了被继承而出现的.普通的类中所有的方法都变成虚方