资源描述:
《面向对象复习笔记》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用基于Java的面向对象程序设计陈维亚weiya_chen@hust.edu.cn华中科技大学软件学院第34讲:课程总结目录1.课程内容总结1)面向对象概念2)面向对象编程(Java)3)面向对象设计2.考试形式与安排3.复习建议21.课程内容总结+++很重要++重要+一般q面向对象概念(+++)如何保证软件系统可扩展,可重用,可维护?文档实用结构稳定,内聚性好,松耦合Ø类与对象•面向过程和面向对象•类和对象的概念、关系、组成类是对象的抽象,对象是类的实例,方法操作对象内部属性(状态)的改变,对象的相互调用也是通过方法来完成。•构造函数,对象的初始化、使用创建对象需
2、要以下三步:声明:声明一个对象,包括对象名称和对象类型。实例化:使用关键字new来创建一个对象。初始化:使用new创建对象时,会调用构造方法初始化对象。Ø封装、继承、多态•封装的好处、实现方式好处:从设计上讲,为了实现模块化1.以类为最小单元,减少修改带来的连锁效应;2.可以对成员变量进行更精确的控制(getter,setter);从使用上讲,减少了复杂度1.代码使用者无需考虑实现细节就能直接使用一个类;2.更有效的协作;良好的封装能够减少代码的耦合,抵御变化实现:依靠4种关键字,可修饰类、属性及方法private:只能被该类的对象访问。文档实用default:即不加
3、任何访问修饰符,只允许在同一个包中进行访问。protected:只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。public:不仅可以跨类访问,而且允许跨包(package)访问。理想的封装状态是:只有一些精心设计的、注释清晰的接口方法为public;成员变量和其他的方法都是private,它们组成了一个类的内部实现,与类的外部无关•继承的概念、好处、实现,super,重写,向上转型概念:继承是一种类和类之间的关系,是一种“isakindof”的关系。好处:•在设计时,它允许创建分等级层次的类,思路更清晰,减少了冗余代码,易于修改;•定义新类时,可以以原
4、来的类为基础,借助代码的重用,使系统变得容易扩展,提高了开发效率。•继承帮助我们统一了函数的调用接口,在增加新类后减少对已有系统的修改。注:final关键字声明类可以把类定义为不能继承的,即最终类;向上转型:对象a是子类对象b的上转型对象,上转型对象可以操作被子类继承和重写的方法,但不能操作子类新增的成员变量和方法。或者用于修饰方法,该方法不能被子类重写。尽量使用组合,慎用继承•多态的定义、分类、实现方法(继承、接口),如何使用定义:多态就是指一种名称定义不同的方法。1.译时多态-方法的重载(overload)2.运行时多态(runtimepolymorphism)程
5、序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。文档实用Ø抽象类和抽象方法•定义,格式,使用情景概念:在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。格式:抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。1)抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽
6、象类。2)抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类是抽象类。Ø静态方法和静态变量使用场合:1.某个变量被该类所有变量需要,如定义常量、计数的变量、数组等;2.只需访问静态变量的方法可定义为静态方法;3.特殊类型的类,没有对应实例,其所需参数都是通过显式参数提供,比如Math类;静态变量在程序初始化时被创建,可被该类所有的实例使用和修改;文档实用4.静态类只能初始化一个实例。Ø接口(Java)•定义,调用,特性,功能,与类的比较,与抽象类的比较定义:软件项目通常由团队完成,各成员独立完成不同子模块后再进行组合为使组合顺利进行,开发成员之间需达成某种“
7、协议”,我们称之为接口。特性:§接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字§接口中可以含有变量,变量会被隐式的指定为publicstaticfinal(用private修饰会报编译错误)§接口中的方法会被隐式的指定为publicabstract功能:1.接口提供了一组功能的命名集合2.接口定义了不同类交互的标准日=>实现了“多继承”,分离了方法的声明和方法的实现接口与类的区别:接口不能用于实例化对象。接口没有构造方法。接口中所有的方法必须是抽象方法。接口只能包含staticfinal成员变量。接口不是被类继承了,而是要被类