对接口编程:接口和抽象类
在《大话设计模式》这本书中,我会听到这个字眼“对接口编程”,而在文中的类图中。会提出这样一个疑问?为什么有的用的是:接口?有的用的是抽象类呢?
本文主要介绍下面内容:接口、抽象类。
文章的最后,会给出软考下午设计模式题中的一些做题技巧
• 什么是接口?
接口是包括一组虚方法的抽象类型,当中每一种方法都有其名称、參数和返回值。
接口方法不能包括不论什么实现,CLR 同意接口能够包括事件、属性、索引器、静态方法、静态字段、静态构造函数以及常数。
注意:一个类能够实现多个接口,当一个类继承某个接口时,它不仅要实现该接口定义的全部方法。还要实现该接口从其它接口中继承的全部方法。
• 什么是抽象类?
抽象类提供多个派生类共享基类的公共定义,它既能够提供抽象方法,也能够提供非抽象方法。
抽象类不能实例化,必须通过继承由派生类实现其抽象方法,因此对抽象类不能使用new keyword,也不能被密封。假设派生类没有实现全部的抽象方法,则该派生类也必须声明为抽象类。
• 对照分析
• 考试秘籍
以下从软考设计模式的做题技巧入手。提供一些參考:(以Java语言为例)
抽象类用keywordabstract声明,用extends继承。
抽象类的目的是定义一个框架。规定某些类必须具有的一些共性。抽象方法:没有函数体的方法
注意:包括抽象方法的类,一定是抽象类。
抽象类的直接派生类必须实现其抽象方法。抽象类仅仅能用于继承,不能用于创建对象(所谓的new)。
接口用keywordinterface声明,keywordimplements实现。接口用于替代多继承的概念。
注意:直接继承了接口的类。必须实现接口中的抽象方法;间接的则能够实现,也能够不实现。
区分:
1、接口和抽象类都不能创建对象。
2、抽象类不能參与多继承,抽象类能够有非静态的成员变量,能够有非抽象的方法;
3、接口能够參与多继承。全部的属性都是静态常量。全部的方法都是public方法。
对接口编程:接口和抽象类相关推荐
- 面向对象编程(十五)——抽象类和接口
一.抽象(abstract)类 抽象类,说白了就是包含抽象方法的类.那什么是抽象方法?抽象方法是一种特殊的方法:抽象方法只有声明,而没有具体的实现.抽象方法说白了就是只有方法的声明,没有方法体. 抽象 ...
- (转帖)对抽象编程:接口和抽象类
[你必须知道的.NET] 第二回:对抽象编程:接口和抽象类-王涛 [你必须知道的.NET] 第二回:对抽象编程:接口和抽象类 Author:王涛 Date:2007-4-12 ©2007 Anytao ...
- [你必须知道的.NET] 第二回:对抽象编程:接口和抽象类
本文将介绍以下内容: • 面向对象思想:多态 • 接口 • 抽象类 1. 引言 在我之前的一篇post<抽象类和接口的谁是谁非>中,和同事管伟的讨论,得到很多朋友的关注,因为是不成体系的论 ...
- Java面向对象编程篇3——接口与抽象类
Java面向对象编程篇3--接口与抽象类 1.接口(interface) 接口中可以含有变量和方法.但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是pub ...
- python中继承和组合的区别_Py修行路 python基础 (十五)面向对象编程 继承 组合 接口和抽象类...
一.前提回忆: 1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均 ...
- 对抽象编程:接口和抽象类
本文将介绍以下内容: • 面向对象思想:多态 • 接口 • 抽象类 1. 引言 在我之前的一篇post<抽象类和接口的谁是谁非>中,和同事管伟的讨论,得到很多朋友的关注,因为是不成体系的论 ...
- 面向对象编程(七):接口(抽象类)
C++ 接口(抽象类) 接口描述了类的行为和功能,而不需要完成类的特定实现. C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念. 如果类中至 ...
- 有关接口和抽象类的问题
1. 一个子类如果implements一个接口,就必须实现接口中的所有方法(不管是否需要):如果是继承一个抽象类,只需要实现需要的方法即可,这是抽象类的一个优点 2. 如果一个接口中定义的方法名改变了 ...
- Java 接口和抽象类可以被new么?
背景: 最近有同事跟我说了他面试时遇到的问题,考官问:"接口和抽象类可以被new嘛?".这可能不是考官的原话,但是据他表达考官大概就是这个意思了.听到这个问题,我的第一反应是肯定不 ...
最新文章
- MapReduce01
- 娱美德投入千万研发 揭秘韩国第一游戏引擎
- MVC4将Controller与views分开
- linux7为nginx添加服务,CentOS7添加Nginx为系统服务
- jQuery验证插件
- bin code led_-/bin/sh: ./led: not found的解决办法
- matlab 创建图形对象,创建坐标轴图形对象
- vue基础之组件(创建,data,切换,父子以及同级之间的传值,插槽solt)
- 190728-flink官方文档阅读和实战记录
- 【JavaEE】ch09-反射
- mid制作乐谱_CuteMIDI简谱打谱软件(midi音乐制作器)V8.5.1 安装版
- 电视视频直播在线播放网站PHP源码V1.2
- MySQL技术内幕 InnoDB存储引擎 第2版 下载
- 安卓仿苹果键盘输入法_仿ios输入法安卓版
- 机器学习中的 Shapley 值怎么理解?
- 帝国网站mysql 数据库开发_帝国cms phpmyadmin数据库操作及密码修改
- 学java怎么做兼职?学Java什么程度才能找兼职?
- 【游戏客户端】剧情系统
- 常见浏览器兼容性问题大全
- android混淆那些坑