解析接口和抽象类

对于接口和抽象类,大大的提高面向对象的功能。

这里总结一下抽象类和接口。

1、抽象类

在面向对象的概念中,我们知道全部的对象都是通过类来描绘的,可是,并非全部的类都是用来描绘对象的,假设一个类中没有包括足够的信息来描绘一个详细的对象。这种类就是抽象类。

抽象类往往用来表征我们在对问题领域(从对象抽象出来的类)进行分析、设计中得出的抽象概念。是对一系列看上去不同,可是本质上同样的详细概念的抽象。

比方:在大话中举了一个动物參加叫声比赛的:有很多猪狗猫………..等等对象,要进行參加比赛这时候。假设使用面向对象来进行编程的话,那么 我们就能够抽出猪狗猫…...的类,来进行实例化对象。相同这些类中也有非常多的相识的地方,比方当中都有叫声这种方法,名字这个属性等等,为了降低代码的反复性。这时候,我们能够再在这些类中把反复的地方抽出来。这就是抽象类了。

如:abstract class Animal

{

Protected abstract string getShoutSound();//这是抽象方法,抽象方法没有方法体,直接在括号后面加入";"

}

抽象方法,应该必须在详细的类中进行重写。

不然抽象类就没有意义。比方叫声这种方法,要在详细的猪狗猫的类中进行不同的实现。还有抽象方法必须为public或者protected(由于假设为private,则不能被子类继承,子类便无法实现该方法)。缺省情况下默觉得public。

抽象类代表的是一种抽象的概念。根本目的是用来继承的。

详细类不是用来继承的。

抽象类和普通类的差别:

①抽象类不能够实例化。就像动物这个抽象类,在实际生活中没有详细的对象与之相应,所以抽象类的实例化是没有意义的。②抽象方法必须被子类重写。

不然抽象方法的存在就没有意义了。

③含有抽象方法的类必需要定义为抽象类。不论当中是否包括一些其它的方法。

包括抽象方法的类称为抽象类,但并不意味着抽象类中仅仅能有抽象方法。它和普通类一样,相同能够拥有成员变量和普通的成员方法。

 

2、接口

接口是从对象中抽象出来的特殊的方法,仅仅有部分的详细的类具有。就是不同类的对象具有同样的特殊方法,这时候能够将方法抽象为接口。

语法:

接口中的方法和属性前面不能有修饰符而且接口中全部的方法不能有详细的实现,也就是说,接口中的方法必须都是抽象方法。从这里能够隐约看出接口和抽象类的差别,接口是一种极度抽象的类型,它比抽象类更加“抽象”,而且普通情况下不在接口中定义变量。

实现接口,事实上也是一种多态的方法。

完毕了不同对象根本不可能完毕的任务。当进行“变出东西的方法”假设是叮当就用万能口袋。假设是孙悟空就使用七十二变。

接口定义:interface change

{

String ChangeThing(string thing);

}

同意一个类遵循多个特定的接口。假设一个非抽象类遵循了某个接口,就必须实现该接口中的全部方法。对于遵循某个接口的抽象类。能够不实现该接口中的抽象方法。

实现接口的类就必需要实现接口中的全部的方法和属性。一个类能够支持多个接口。多个类也能够支持同样的接口。

3、抽象类和接口的差别

代码实现:

1、抽象类能够给出一些成员的实现,而接口却不包括成员的实现。所以接口是比抽象类更加抽象的行为。

2、抽象类的抽象成员可被子类部分实现,接口的成员须要实现类全然实现。

3、一个类仅仅能继承一个抽象类,可是能够实现多个接口。

定义:

①设计层面不同

抽象类作为非常多子类的父类,它是一种模板式设计。假设发如今猪狗猫。这些动物毛掉了仍然能够生长。这种方法没有在写出,那么这时候能够再抽象类中进行加入方法,并给出实现。子类中的代码能够不进行更改。

而接口是一种行为规范。

是从多个不同对象中抽象出来的共同的方法。假设在抽象出第二个方法,那么实现接口的类须要又一次实现接口。

②抽象层面:

类是对对象的抽象,抽象类是对类(一些相识的类的对象)的总体(字段。属性,方法)的抽象,接口是对类的局部的行为(行为跨越了不同类的对象)进行抽象。

从设计的角度讲,抽象类是从子类中发现公共的东西,泛化出父类,是重构的结果。

而接口是根本不知道子类的存在,预先进行定义的,是设计的结果。

比方:猫狗,都是动物有非常多相识的地方。所以能够让他们继承动物这个抽象类。

而飞机,麻雀,超人,是全然不相关的类。他们由都会飞,所以这时候能够让他们来实现同样的接口。

总是不论是接口,抽象类,类,甚至是对象,都是在不同层次,不同角度的进行抽象的结果,共性就是抽象。

4、为什么

至于使用接口和抽象类的优点是什么。目的是解耦。将业务和实现分离开。对于这一块的理解还不是非常深刻,接下来有新的认识在放到这里。

时间: 2024-10-14 00:59:27

解析接口和抽象类的相关文章

从接口、抽象类到工厂模式再到JVM来总结一些问题

俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口? 接口和抽象类的区别 简单工厂模式总结 Java中new和newInstance的区别 Java的Class.forName(xxx); Java里创建对象的几个方式总结 Java类加载机制总结 Java WEB的三层架构和MVC的关系 工厂方法模式总结 抽象工厂模式总结 一道面试题的分析 一个服务提供者框架的学习 接口的另一常用法:策略模式 参考资料 先看这样一个场景:某个果园里现在有

接口和抽象类的区别 --相信你看完不会再混淆了

我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问. 1.面向接口编程和面向对象编程是什么关系 首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分.或者说,

java的接口和抽象类的理解

Java接口和抽象类用法总结,使用场景 分类: java 2014-07-09 15:22 279人阅读 评论(0) 收藏 举报 原文转载自:http://yinny.iteye.com/blog/1152430 接口 1 因为java不支持多重继承,所以有了接口,一个类只能继承一个父类,但可以实现多个接口,接口本身也可以继承多个接口. 2 接口里面的成员变量默认都是public static final类型的.必须被显示的初始化. 3 接口里面的方法默认都是public abstract类型的

接口和抽象类的区别(经典)

转至http://yinny.iteye.com/blog/1152430#bc2372045 接口和抽象类的区别: 1 接口是核心,其定义了要做的事情,包含了许多的方法,但没有定义这些方法应该如何做.     2 如果许多类实现了某个接口,那么每个都要用代码实现那些方法     3 如果某一些类的实现有共通之处,则可以抽象出来一个抽象类,让抽象类实现接口的公用的代码,而那些个性化的方法则由各个子类去实现. 所以,抽象类是为了简化接口的实现,他不仅提供了公共方法的实现,让你可以快速开发,又允许你

python开发面向对象基础:接口类&抽象类&多态&多继承

一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能 开发中容易出现的问题 1 class Alipay: 2 ''' 3 支付宝支付 4 ''' 5 def pay(self,money): 6 print('支付宝支付了%s元'%money) 7 8 class Applepay: 9 ''' 1

Java 接口和抽象类区别

1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务实现了.当你需要再开发另一个相近的项目时,你以前的抽象层说不定还可以再次利用 .面对对象的设计,复用的重点其实应该是抽象层的复用,而不是具体某一个代码块的复用. 说到了抽象,我就不能不提到曾让我头痛的Java接口和Java抽象类了,这也是本文我想说的重点. 既然面向对象设计的重点在于

2.35 Java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别

java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别 一.抽象 abstract作用:不能产生对象,充当父类,强制子类正确实现重写方法和类相比仅有的改变是不能产生对象,其他的都有,包括构造.属性等等任何一个类只要有一个抽象的方法就成了抽象类 抽象方法 public abstract A();①方法是抽象的,这个类也是抽象的:②子类必须重写抽象方法,除非子类也是抽象类 抽象类可以没有抽象方法,但一般不这么设计 二.接口 interface 接口也是Java的一种引用数据类型(J

C#中接口和抽象类的区别

什么是接口? 用来定义一种程序的协定.实现接口的类或者结构要与接口的定义严格一致.有了这个协定,就可以抛开编程语言的限制(理论上).C#接口可以从多个基接口继承,而类或结构可以实现多个接口.C#接口可以包含方法.属性.事件和索引器.接口本身不提供它所定义的成员的实现.接口只指定实现该接口的类或接口必须提供的成员. 如何使用接口? 例如: <span style="font-family:KaiTi_GB2312;">using System; using System.Co

C#OOP之八 继承 接口和抽象类

继承 在现实生活中有所谓的"种瓜得瓜.种豆得豆"的说法,在生物学概念上就是"遗传"的概念,在面向对象中"继承"就类似于生物学中的遗传,通过继承,可以更好的实现代码的重用(复用,多次使用的意思).增加扩展性.简化代码等. 下面是现实生活中的引用: 定义与使用继承 继承一次最常用的就是通过合法程序(比如遗嘱)从别人那里接受财产或爵位等,有点类似于世袭制. 另外一个含义,是人从父母那里继承一些特征,如果孩子从父母继承的身高.相貌等特征.那么在什么情况下