1.抽象类的特点:

包含至少一个以abstract表示的没有实现的方法——抽象方法,来代表父类中的可变方法。当然抽象类可以提供实现的具体方法。

包含的有具体实现的方法来代表父类中的不可变的通用方法。

不能被实例化。

子类继承时必须实现去所有抽象方法,否则子类也是一个抽象类,不能被实例化。这样的设计是使得方法签名上保持持续性。(方法签名是指:方法的名称,参数的数量和参数的类型这三部分,不包含返回类型。可以通过不同的方法签名来重载一个方法。) 也就是说,抽象类设定了一个契约,子类必须完成这个契约所规定的部分。

2.模式UML:

3.例子:

省略

注意:

1)Java不支持多继承,所以使用继承的原则是首选接口,简洁为上,也就是说只在必须使用的时候使用继承,除非要实现的方法中太多是确定的。因为接口的使用也有弊病,由于接口中的方法并不实现,这就意味着每一个对接口的直接实现都要显式的实现所有接口中声明的方法,即使这个方法对于所有的接口实现者都是不变固定的。

2)结合这两种基本模式,我们就能得到一个经典模式——缺省适配模式。声明类型的工作仍然由Java接口承担,但是同时给出一个Java 抽象类,且实现了这个接口,而其他同属于这个抽象类型的具体类可以选择实现这个Java接口,也可以选择继承这个抽象类,也就是说在层次结构中,Java 接口在最上面,然后紧跟着抽象类,这将两个的最大优点都能发挥到极至了。在Java语言API中用了这种模式,而且全都遵循一定的命名规范:Abstract +接口名。

3)在继承上遵循以下原则:使用Java接口和抽象Java类进行变量的类型声明、参数是类型声明、方法的返还类型说明,以及数据类型的转换等。而不要用具体Java类进行这些。如果你准备写一个具体类去继承另一个具体类的话,那你的设计就有很大问题了。

4)抽象类可以完成这样的一种需求:在功能中必须完成某一个逻辑,但是在子类中该功能的具体定义中除了这段逻辑外又有所不同。

参考文献:

http://www.cnblogs.com/fanqimeng/archive/2009/05/13/1456183.html

本文转自gnuhpc博客园博客,原文链接:http://www.cnblogs.com/gnuhpc/archive/2012/12/17/2822379.html,如需转载请自行联系原作者

【面向对象设计基础】抽象类相关推荐

  1. 大话设计模式读后感之面向对象设计基础

    面向对象设计基础: 1.类与实例 什么是对象? 对象是一个自包含的实体,用一组可识别的特性和行为来标识 什么是类? 就是具有相同属性和功能的抽象的类的集合 什么是实例? 一个真实的对象 2.构造方法 ...

  2. 第3章 面向对象设计基础

    第3章  面向对象设计基础 第二章介绍了C#的基本语法,以及使用方法.C#同Java.C++一样是面向对象的编程语言,同时C#更强化了面向对象的概念.本章将介绍面向对象的基础知识并介绍使用C#编写面向 ...

  3. 《UML面向对象设计基础》—第1章1.2节信息/实现隐藏

    本节书摘来自异步社区<UML面向对象设计基础>一书中的第1章1.2节信息/实现隐藏,作者[美]Meliir Page-Jones,更多章节内容可以访问云栖社区"异步社区" ...

  4. 《UML面向对象设计基础》—第1章1.5节消息

    本节书摘来自异步社区<UML面向对象设计基础>一书中的第1章1.5节消息,作者[美]Meliir Page-Jones,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  5. php面向对象代码_PHP面向对象之抽象类详解(代码实例)

    [摘要] PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 ...

  6. Java自学笔记——Java面向对象——04.抽象类、接口、内部类

    Java 面向对象各节 Java自学笔记--Java面向对象--01.回顾方法 Java自学笔记--Java面向对象--02.构造器.类和对象 Java自学笔记--Java面向对象--03.封装.继承 ...

  7. Java面向对象编程——抽象类和接口

    Java面向对象编程--抽象类和接口 定义类的过程就是抽象和封装的过程,而抽象类与接口则是对实体类进行更高层次的抽象,进定义公共行为和特征. 抽象类: 如果一个类没有足够的信息去描述一个具体的对象,那 ...

  8. Java面向对象之抽象类与接口

    Java面向对象之抽象类与接口 ⚡️前言⚡️ 本篇文章为面向对象部分的第三篇文章,前两篇文章见链接包和继承.组合与多态.抽象类和接口都是继承关系中父类的更进一步,结合前两篇文章来阅读更易理解掌握.

  9. java 抽象类对象_Java基础___面向对象__抽象类

    抽象类 在面向对象的概念中,所以的对象都是通过类来描绘的,但是反过来,并不是多余类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不能实例化对象 ...

  10. kotlin面向对象之抽象类、继承、多态

    继承: 比较简单,直接看如何使用,这里以父亲与儿子的关系为例: 接着定义儿子并且继承父亲,如下: 是用":"号来继承的,但是此时报错了,看下错误提示: 在kotlin的类并非是人人 ...

最新文章

  1. 聊天机器人落地及进阶实战 | 公开课速记
  2. Java连接SQL数据库失败的分析思路
  3. 微信小程序图片选择,预览和删除
  4. websocket初探
  5. 库克谈“唱衰苹果”:一派胡言!
  6. .NET Framework中的配置文件(config)
  7. depends-on
  8. Ps学习(快速选择工具和魔棒的使用)
  9. beyond compare怎么设置不比较文件修改时间?
  10. 怎么关闭火狐浏览器的百度辅助模式(无障碍服务)
  11. 云服务器如何共享文件夹,云服务器如何设置共享文件夹
  12. 硬件设计4---什么是电感磁珠?
  13. uni-app开发中遇到的问题(持续更新...)
  14. RDKit|分子修改与编辑
  15. C# WPF开源控件库:Newbeecoder.UI使用指南(四)
  16. D3D Surface/Texture SDL DDraw渲染视频的区别和疑问
  17. linux如何解除密码锁屏图案大全,手机锁屏图案(锁屏密码)忘记了怎么办?四种方法帮你轻松搞定...
  18. 华为防火墙USG6000v总结
  19. vb.net 教程 2-3 流程控制:循环语句 For...Next
  20. 在Linux系统上安装Git

热门文章

  1. WebApplication(Web应用程序)和WebSite(网站)的区别
  2. 项目心得--我的尺寸测量项目
  3. model.evaluate 输出出一大串 ======================
  4. Unity实现导航到鼠标点击位置并显示路线
  5. EXCEL单元格内的姓名对齐
  6. 【GIS】投影类型的选择
  7. 省级国土空间基础信息平台建设方案分析
  8. DataFrame的行列操作
  9. zabbix安装 监控mysql
  10. php基础教程 第五章,php基础教程——5数据库总结_PHP教程