基于JA V A面向对象的研究段小强(湖北工业大学计算机学院,湖北武汉430068)摘要:面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。
面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。
如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
关键词:面向对象设计开发Object Oriented Research Based On JA V Aduanxiaoqiang(Hubei University Of Technology,hubei wuhan 430068)【Abstract】Object oriented ( Object Oriented, OO ) computer industry is currently the focus of concern, it is 90 time of mainstream software development methodology. Object oriented concepts and applications have been beyond the programming and software development, extended to a wide range of. Such as database system, interactive interface, application structure, application platform, distributed system, network management structure, CAD technique, artificial intelligence and other fields.【Key words】object-oriented design development1.引言Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。
Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
2.面向对象的基本概念(1)对象。
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
(2)对象的状态和行为。
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中(3)类。
具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。
因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
(4)类的结构。
在客观世界中有若干类,这些类之间有一定的结构关系。
通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
①一般--具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。
②整体--部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。
(5)消息和方法。
对象之间进行通信的结构叫做消息。
在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。
发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。
一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
类中操作的实现过程叫做方法,一个方法有方法名、返回值、参数、方法体。
3.面向对象的术语1. 类类作为设计蓝图来创建对象的代码段,它描述了对象的特征;该对象具有什么样的属性,怎样使用对象完成一些任务,他对事件进行怎样的响应等!2. 对象对象是类的一个实例,通常通过调用类的一个构造函数来创建它!3. 方法方法是在类中定义的函数,一般而言,一个方法描述了对象可以执行的一个操作!4. 属性属性是类中定义的变量,类的属性突出刻画了对象的性质或状态。
某些情况下,对象的使用者可能不允许改变对象的某些属性,这是因为类的创建者已经规定了那些属性不能被使用者更改。
这就比如你只能知道我是男生,但你没有办法改变!5.事件VB是由事件触发!事件是由某个外部行为所引发的对象方法。
他可与用户行为(例如单击某个Button)或系统行为相关联。
6.构造函数构造函数是创建对象所调用的特殊方法,在VB中,对象的创建是通过在给定的类中创建名为new的过程而实现的!7. 析构函数析构函数是释放对象时所调用的特殊方法,在VB中,为了编写析构函数,我们必须重写基类的Dispose方法。
但是,由于CLR自动进行垃圾收集,因此在受管代码中很少需要显式得调用析构函数。
然后,当运行CLR之外的资源(如设备,文件句柄,网络连接等)时,应调用Dispose方法确保计算机的性能!8. 继承继承是面向对象的一个概念,它规定一个类可以从其他的小类(基类)中派生,并且该派生类继承其基类的接口和相应代码!(该类称为派生类或子类)9. 重写重写是面向对象的一个概念,它规定一个派生类可以创建其基类某个方法的不同实现代码。
实际上,它完全重写了基类中该方法所执行的操作!10. 接口接口是一种约定,它定义了方法、属性、时间和索引器的结构。
我们不能直接从一个接口创建对象,而必须首先通过创建一个类来实现接口所定义的特征!11.封装封装是一个概念,它的含义是把方法、属性、事件集中到一个统一的类中,并对使用者屏蔽其中的细节问题一个关于的封装的实例是小汽车——我们通过操作方向盘、刹车和加速来操作汽车。
好的封装不需要我们考虑燃料的喷出、流动问题等。
12. 重载他规定一个方法可以具有不同的实现,但方法的名称是相同的。
13. 多态它规定,一个同样的函数对于不同的对象可以具有不同的实现。
例如一个Add方法,它既可以执行整数的加法求和操作,也可以执行字符串的连接操作!4.继承、重载与多态1.继承Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
JAVA不支持多重继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,同时一个类可以实现多个接口,从而克服单继承的缺点。
在面向对象程序设计中运用继承原则,就是在每个由一般类和特殊类形成的一般—特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和操作一次性地在一般类中进行显式的定义,在特殊类中不再重复地定义一般类中已经定义的东西,但是在语义上,特殊类却自动地、隐含地拥有它的一般类中定义的属性和操作。
特殊类的对象拥有其一般类的全部或部分属性与方法,称作特殊类对一般类的继承。
继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成员方法。
若类B继承类A,则属于B的对象便具有类A的全部或部分性质(数据属性)和功能(操作),我们称被继承的类A为基类、父类或超类,而称继承类B为A的派生类或子类。
继承避免了对一般类和特殊类之间共同特征进行的重复描述。
同时,通过继承可以清晰地表达每一项共同特征所适应的概念范围——在一般类中定义的属性和操作适应于这个类本身以及它以下的每一层特殊类的全部对象。
运用继承原则使得系统模型比较简练也比较清晰。
方法继承:利用extends关键字一个方法继承另一个方法,而且只能直接继承一个类。
* 当Sub类和Base类在同一个包时Sub类继承Base类中的public/protected/默认级别的变量个方法* 在不同包时继承public/protected级别的变量和方法。
2.重载在Java 中,同一个类中的2个或2个以上的方法可以有同一个名字,只要它们的参数声明不同即可。
在这种情况下,该方法就被称为重载(overloaded),这个过程称为方法重载(method overloading )。
方法重载是Java 实现多态性的一种方式。
如果你以前从来没有使用过一种允许方法重载的语言,这个概念最初可能有点奇怪。
但是你将看到,方法重载是Java最有用的特性之一。
当一个重载方法被调用时,Java 用参数的类型和(或)数量来表明实际调用的重载方法的版本。
因此,每个重载方法的参数的类型和(或)数量必须是不同的。
虽然每个重载方法可以有不同的返回类型,但返回类型并不足以区分所使用的是哪个方法。
当Java 调用一个重载方法时,参数与调用参数匹配的方法被执行。
1、方法重载:如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载。
* 方法名相同* 方法的参数类型,个数顺序至少有一项不同* 方法的返回类型可以不相同* 方法的修饰符可以不相同* main方法也可以被重载2、方法覆盖:如果在子类中定义一个方法,其名称、返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,那么可以说,子类的方法覆盖了父类的方法。
* 子类的方法名称返回类型及参数签名必须与父类的一致* 子类方法不能缩小父类方法的访问权限* 子类方法不能抛出比父类方法更多的异常* 方法覆盖只存在于子类和父类之间,同一个类中只能重载* 父类的静态方法不能被子类覆盖为非静态方法* 子类可以定义于父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法(满足覆盖约束),而且Java虚拟机把静态方法和所属的类绑定,而把实例方法和所属的实例绑定。
* 父类的非静态方法不能被子类覆盖为静态方法* 父类的私有方法不能被子类覆盖* 父类的抽象方法可以被子类通过两种途径覆盖(即实现和覆盖)* 父类的非抽象方法可以被覆盖为抽象方法3、Super关键字:super和this关键字都可以用来覆盖Java语言的默认作用域,使被屏蔽的方法或变量变为可见* 父类的成员变量和方法为private使用super访问编译出错* 在类的构造方法种,通过super语句调用这个类的父类的构造方法。
* 在子类种访问父类的被屏蔽的方法和属性。
* 只能在构造方法或实例方法内使用super关键字,而在静态方法和静态代码块内不能使用super。