`

第二章 面向对象的几个基本原则

 
阅读更多

2.1 抽象类和接口


 抽象类是可以继承一个抽象类



 抽象类

public abstract class Animal {
	public abstract void sleeping();
	public abstract void run();
}

 

具体类:

 

public class Bird extends Animal {
	@Override
	public void run() {
		System.out.println("鸟用翅膀飞");
	}
	@Override
	public void sleeping() {
		System.out.println("鸟在树枝上睡觉");
	}
	public static void main(String[] args) {
		Animal bird = new Bird();
		bird.run();
		bird.sleeping();
	}
}

 

public class Dog extends Animal {
	@Override
	public void run() {
		System.out.println("狗用脚跑");
	}
	@Override
	public void sleeping() {
		System.out.println("狗白天睡觉");
	}
	public static void main(String[] args) {
		Animal dog = new Dog();
		dog.run();
		dog.sleeping();
	}
}

抽象类的总结
 

  • 抽象类应该拥有尽可能多的共同代码
  • 抽象类应该拥有尽可能少的数据

什么时候用抽象

  • 区分is-a(继承)和has-a
  • 永远不会出现将子类转换为另一个类的子类
  • 子类具有扩展超类得责任,而不是置换或注释超类的责任
  • 只有在分类学角度上有意义时才继承,而不是继承工具类

什么是接口

一个Java接口是一些方法特征的集合,只有方法的特征,没有方法的实现,因此这些方法在不同的地方被实现时代表不同的行为。Java接口不涉及对象,只描述共有特征的行为,且没有方法的实现。

为什么使用接口

  • 完成不同对象之间相互关系的体现,作为连接不同对象之间完成业务的纽带
  • 接口保证了可插入性,关联的插入性和调用的可插入性
  • 类型的转换

2.2 面向抽象

  • 问题描述:求不同柱体的体积
  • 不同柱体:圆柱体,矩形柱体,三角形柱体
  • 公式:底面积*高
  • 问题分析
    柱体
    圆柱体、矩形柱体、三角形柱体
  • 体积
    底面积
    圆、矩形、三角形

设计



 
2.3 开闭原则

  • 开闭原则:Open-Closed-Principle
    对扩展开放:轻松的加自己的扩展
    对修改关闭:加扩展不需要修改原来的代码结构
    在不被修改的前提下进行扩展
    易扩展、易维护
    要做到开闭原则就必须进行合理的抽象,将可变的需求尽量都关闭在抽象部分类里,将可扩展的部分放在子类中来体现

2.4 多用组合少用继承原则

  • 继承的缺点
    子类继承父类的方法在编译期间就被确定了,所以在运行期间无法改变从父类继承的方法行为
    子类与父类属于强耦合关系,一旦父类的方法改变,所有子类的方法都得改变
    白盒复用,因为子类对父类的所有方法是可见的
  • 组合复用的优点
    黑盒复用,当前对象只拥有委托对象实例,具体实现细节都在委托对象类中
    对象与所包含的对象属于弱耦合关系
    可以再运行期间动态指定所包含的对象

2.5 高内聚低耦合原则

  • 高内聚
    类中的方法都是一组相关的行为,是所有子类的共有行为
  • 低耦合
    不要让一个类包含太多对其他类的应用,避免修改其他对象时以影响到了太多的关联对象
  • 大小: 57.2 KB
  • 大小: 30.7 KB
  • 大小: 51.3 KB
2
0
分享到:
评论
3 楼 crawler 2013-05-08  
lvwenwen 写道
求问楼主自己学习的总结还是有什么相关的材料

这是我以耿祥义《Java设计模式》和阎宏《Java和模式》以及自己的理解分析总结的
2 楼 lvwenwen 2013-05-07  
求问楼主自己学习的总结还是有什么相关的材料
1 楼 sunman5277 2013-05-06  
求问楼主自己学习的总结还是有什么相关的材料,有的话可以发出来分享下

相关推荐

    设计模式:可复用面向对象软件的基础 书和源码

    《设计模式:可复用面向对象软件的基础》是引导读者...第二章 实例研究:设计一个文档编辑器 第三章 创建型模式 第四章 结构型模式 第五章 行为模式 第六章 结论 附录A 词汇表 附录B 图示符号指南 附录C 基本类 参考文献

    深入PHP面向对象、模式与实践 (第2版)》 part2

    第二部分 对象  第2章 PHP与对象   第3章 对象基础   第4章 高级特性   第5章 对象工具   第6章 对象与设计  第三部分 模式  第7章 什么是设计模式?为何使用它们   第8章 模式原则   第 9...

    深入PHP面向对象、模式与实践 (第2版) part1

    第二部分 对象  第2章 PHP与对象   第3章 对象基础   第4章 高级特性   第5章 对象工具   第6章 对象与设计  第三部分 模式  第7章 什么是设计模式?为何使用它们   第8章 模式原则   第 9...

    面向对象与UML资料

    第二章 面向对象的分析与设计 18 第一节 面向对象方法概述 18 对象与面向对象 18 面向对象技术产生的原因 19 面向对象方法的基本思想 19 概念 19 面向对象技术的特点 19 面向对象语言及系统 19 第二节 面向对象的...

    《C--面向对象程序设计》习题与上机解答-提交稿-陈维兴

    对于面向对象的程序设计,程序员注重的是类的设计和编写,即问题域中涉及几个类,各个类之间的关系如何,每个类包含哪些数据和函数(操作代码),再由类生成其对象。程序中的一切操作都是通过向对象发送消息来实现的...

    《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导

    第二册:《HeadFirst设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。 第三册:《Head First软件开发(中文版)》内容包括:伟大的软件开发:让客户满意、收集需求:...

    系统分析师考试培训课程

    2第二章:计算机组成原理与系统结构(第一部分) 3第二章:计算机组成原理与系统结构(第二部分) 4第三章:数据通信与计算机网络 5第四章:操作系统(第一部分) 6第四章:操作系统(第二部分) 7第五章:数据库...

    编译原理(第2版)课件

    张素琴老师编写的第二版,中英文课件全套 第1章 引论 1.1 什么是编译程序 1.2 编译过程和编译程序的结构 1.2.1 编译过程概述 1.2.2 编译程序的结构 1.2.3 编译阶段的组合 1.3 解释程序和一些软件工具 1.3.1 解释程序...

    Python3程序开发指南(第二版).pdf

    由于面向对象程序设计是建立在过程型程序设计基础之上的,因此,此前几章讲述的过程型程序设计相关的知识仍然可以用于面向对象程序设计,比如,利用同样的数据类型、集合数据类型以及控制结构。 第7章主要讲述文件的...

    程序设计教程 陈家骏等编著

    第12章 实例--面向对象的Windows应用程序框架 337 12.1 Windows应用程序的基本结构 337 12.1.1 应用程序的用户界面 337 12.1.2 消息驱动的程序结构 339 12.2 MFC类库(Microsoft Foundation Class library) 341 ...

    Think in UML大象(架构师必备,珍藏版).part03.rar

    准备篇讲述面向对象分析的一些基本概念,及学习建模需要了解的一些基本知识。基础篇对UML的基础概念重新组织和归纳整理,进行扩展和讨论,引申出针对UML的这些概念在面向对象方法中应用方法的思考。进阶篇以一个实例...

    Think in UML大象(架构师必备,珍藏版).part04.rar

    准备篇讲述面向对象分析的一些基本概念,及学习建模需要了解的一些基本知识。基础篇对UML的基础概念重新组织和归纳整理,进行扩展和讨论,引申出针对UML的这些概念在面向对象方法中应用方法的思考。进阶篇以一个实例...

    Think in UML大象(架构师必备,珍藏版).part01.rar

    准备篇讲述面向对象分析的一些基本概念,及学习建模需要了解的一些基本知识。基础篇对UML的基础概念重新组织和归纳整理,进行扩展和讨论,引申出针对UML的这些概念在面向对象方法中应用方法的思考。进阶篇以一个实例...

    Think in UML大象(架构师必备,珍藏版).part10.rar

    准备篇讲述面向对象分析的一些基本概念,及学习建模需要了解的一些基本知识。基础篇对UML的基础概念重新组织和归纳整理,进行扩展和讨论,引申出针对UML的这些概念在面向对象方法中应用方法的思考。进阶篇以一个实例...

    Think in UML大象(架构师必备,珍藏版).part06.rar

    准备篇讲述面向对象分析的一些基本概念,及学习建模需要了解的一些基本知识。基础篇对UML的基础概念重新组织和归纳整理,进行扩展和讨论,引申出针对UML的这些概念在面向对象方法中应用方法的思考。进阶篇以一个实例...

    Think in UML大象(架构师必备,珍藏版).part08.rar

    准备篇讲述面向对象分析的一些基本概念,及学习建模需要了解的一些基本知识。基础篇对UML的基础概念重新组织和归纳整理,进行扩展和讨论,引申出针对UML的这些概念在面向对象方法中应用方法的思考。进阶篇以一个实例...

    Think in UML大象(架构师必备,珍藏版).part05.rar

    准备篇讲述面向对象分析的一些基本概念,及学习建模需要了解的一些基本知识。基础篇对UML的基础概念重新组织和归纳整理,进行扩展和讨论,引申出针对UML的这些概念在面向对象方法中应用方法的思考。进阶篇以一个实例...

    Think in UML大象(架构师必备,珍藏版).part07.rar

    准备篇讲述面向对象分析的一些基本概念,及学习建模需要了解的一些基本知识。基础篇对UML的基础概念重新组织和归纳整理,进行扩展和讨论,引申出针对UML的这些概念在面向对象方法中应用方法的思考。进阶篇以一个实例...

Global site tag (gtag.js) - Google Analytics