1、 专业:计算机科学与技术 1003 姓名:张卫东 学号:2010310200716面向对象的概念所谓面向对象的方法,就是使我们分析、设计和实现一个系统的方法尽可能自然地使用我们在生活中用到的以对象为中心的思想,分析、认识、设计一个系统的方法。包括:面向对象的分析(OOA, Object-Oriented Analysis)面向对象的设计(OOD, Object-Oriented Design)面向对象的程序设计(OOP, Object-Oriented Program)面向对象技术主要围绕以下几个概念讨论:对象的封装(抽象数据类型) 、类与对象、 继承性、多态性。对象(Object) 有两个层
2、次的概念:现实生活中对象指的是客观世界的实体,它由状态(State)和行为(Behavior)构成 ;程序中对象是现实世界对象的模型,是一组变量和相关方法的集合。变量(Variables )表示现实对象的状态,方法(Methods)表现现实世界对象的行为,这些变量和方法叫做这个对象的成员(Member) 。可将现实生活中的对象经过抽象,映射为程序中的对象。对象在程序中通过一种抽象数据类型来描述,就称为类(Class) 。Class Car int color_number; int door_number;int speed;void brake() void speedUp() void s
3、lowDown() 类(Class ): 类是描述对象的“基本原型”,它定义一类对象所能拥有的数据和能完成的操作。在面向对象的程序设计中,类是程序的基本单元。相似的对象可以归并到同一个类中去,就像传统语言中的变量与数据类型关系一样。对象:程序中的对象是类的一个实例,是一个软件单元,它由一组结构化的数据和在其上的一组操作构成。类的变量(Class Variables):指对象的所具有的状态或特征。类的方法(Class Methods):指对象的功能单元。消息(Message) :软件对象通过相互间传递消息来相互作用和通信,一个消息由三部分组成:1. 发送消息的对象2. 接收发送消息(调用发送对象
4、的方法)3. 方法需要的参数一个例子:Class Hello Private String s;public void showString() System.out.println(s);public void changeString(String str)s = str; 在程序中操作对象是类的一个实例。创建一个对象: Hello obj=new Hello();调用方法: obj.showString();为什么使用类?采用简单数据类型表示现实世界中概念存在一些局限性。例如:采用 int 型数据表示一个日期概念,需要使用 3 个变量:int day, month, year;如果要表示
5、 2 个人的生日,就要使用 6 个变量:int mybirthday, mybirthmonth, mybirthyear;int yourbirthday,yourbirthmonth,yourbirthyear;将变量和方法封装在一个类中,可以对成员变量进行隐藏,外部对类成员的访问都通过方法进行,能够保护类成员不被非法修改。class BirthDate private int day,month,year;public int tomorrow() BirthDate mybirth, yourbirth;BirthDate date;已知当前日期对象,求第 2 天的日期对象:date.
6、day =date.day+1;如果 date.day 已经为 31,操作结果是非法状态。可以定义一个成员方法tomorrow(),求第 2 天的日期对象。外部要获得当前日期的后一天时,只要调用:date.tomorrow();封装(Encapsulation )封装把对象的所有组成部分组合在一起。封装定义程序如何引用对象的数据,实际上是用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。封装利于模块化和信息隐藏。对象 A 对象 B私有数据方法 方法数据公有数据子类(Subclass)子类:是作为另一个类的扩充或修正而定义的一个类。继承(Inheritance)一个类从另一个类派生出
7、来的过程叫继承。这个类叫子类(派生类),而被继承的类叫该类的超类(父类)继承的子类可利用父类中定义的方法和变量,就像它们属于子类本身一样。也可以改变继承来的方法和变量。class Car int color_number; int door_number;int speed;public void push_break() public void add_oil() class Trash_Car extends Cardouble amount;public void fill_trash() 方法的覆盖(override)在子类中重新定义父类中已有的方法。class Car int col
8、or_number; int door_number;int speed;public void push_break() speed = 0;public void add_oil() class Trash_Car extends Cardouble amount;Bicle(Super class)Mountain bikes Racing bikes Tandem bikesSuclasspublic void fill_trash() public void push_break()speed = speed 10;方法的重载(Overload)在同一个类中至少有两个方法用同一个名字,但有不同的参数列表。使用重载方法时,Java 编译器根据传递给这个参数的数目和类型确定正确的方法。重载实现了对象的多态特性。多态性的特点大大提高了程序的抽象程度和简洁性。类void show(int int_num)void show(double double_num)void show(int int_num, float float_num)123 1.23123,1.23