欢迎来到天天文库
浏览记录
ID:16164818
大小:30.50 KB
页数:3页
时间:2018-08-08
《原创:c++和java中oop机制之差异性分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、摘要:C++和Java是目前使用相当广泛的两种面向对象程序设计语言,该文对二者的OOP实现机制之差异性进行分析,从封装性、继承性和多态性三个方面进行探讨,为熟练使用C++和Java进行OOP编程提供帮助。中国论文网 关键词:封装性;继承性;多态性;差异性 中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)03-0599-02 C++和Java是目前主流的两种面向对象的程序设计语言。C++是编译型,而Java是解释型。C++执行速度快,而Java可移植性好,C++适合底层编
2、程,而Java擅长于WEB系统和嵌入式消费电子设备编程。C++和Java都于基于OOP理论设计出来的,所以它们在基本语法和核心概念上有许多相似之处,然而它们之间在OOP的实现机制上存在不容忽视的差异。本文分析C++和Java在OOP实现机制上的差异。 1OOP基本概念分析 OOP(Object-OrientedProgramming)面向对象编程是目前最主流的程序设计思想,其核心内容由三部分组成:封装性、继承性和多态性。 1.1封装性 封装就是把数据和操作数据的方法结合在一起,形成一个类,外面的
3、类不能随意访问这些数据,通常提供公用方法来访问数据。类和方法是封装性的核心概念。类是一类事物的抽象,包含这类事物的描述和可进行的动作。按照类的模板建立的实例,叫做对象。例如“教师”就可以抽象为一个类,其数据包括教师编号、姓名、性别等,其方法包括备课、讲课、辅导等,具体到某一个教师如“李华老师”,他就是一个对象。 1.2继承性 继承性所表达的是类之间的相互关系,为程序代码的复用提供了良好的支持。继承机制的核心概念是父类和子类,也叫基类和派生类。派生类继承基类的数据和操作,也就是说允许派生类使用基类的数
4、据和操作。同时派生类也可以增加新的数据和操作。例如汽车可以抽象为一个基类,警车类可以作为派生类,它继承了汽车类的有四个车轮及可以移动的特性,还可以增加新的特性,如有警灯、警笛和优先通行等特性。 1.3多态性 多态性指不同的对象收到相同的消息时产生多种不同的行为方式。例如一个司机的车停在了别人的车位上,司机可能会收到别人给他的消息?“请把您的车挪开”,在图书馆里司机的凳子挡住了别人的去路,司机可能会收到别人给他的消息?“请把您的凳子挪开”。在这两种情况下司机收到的都是“挪开”一样东西的消息,但是在听到
5、“挪开”请求以后的行为是截然不同的。这就是多态性,多态性的核心概念是重载和覆盖。 2封装性之差异性分析 C++拥有OOP的特性,同时也继承了C的许多面向过程的特性,如全局变量、结构体和枚举等,所以C++包含了面象过程编程和面向对象编程的双重概念。然而Java却是一种完全面向对象的编程语言,它所有的程序都是由类或者说类的定义组成的。 2.1类的定义之差异 类的组成通常是数据和操作,它们在C++中通常称为成员数据和成员函数,在Java中通常称为属性和方法。在C++中函数可以定义在类中,作为成员函数,
6、也可以不定义在类中,作为独立的函数;数据可以定义在类中,作为成员数据,也可以定义在类外,作为全局变量。在Java所有的方法和属性必须定义在某个类中,禁止在类外对方法和属性进行定义,更符合其完全面向对象的特点。 在C++中不可以在一个类的内部定义另一个类,也就是说不支持类的嵌套定义,而Java支持类的嵌套定义,称之为内部类。http://www.wandayulec.comwyl 2.2对象的建立与销毁之差异 C++和Java对象建立过程中分配空间的时机不同。假若有一个类Point,语句Pointp
7、在C++中的含义是定义一个对象p,同时为对象p分配存储空间;语句Pointp在Java中含义却只是定义一个实例变量p,并没有分配存储空间,只有执行了p=newPoint()后才完成了存储空间的分配,生成了对象。 C++中对象的生成和销毁都是通过编程人员编写程序代码来完成的,对象的生成需要编写构造函数,对象的销毁需要编写析构函数,在需要生成对象时自动调用构造函数,在对象销毁时自动调用析构函数,内存空间是由编程人员负责管理的。 Java中对象的生成需要调用构造方法,这和C++中一样。但在Java中为简化
8、编程,对象销毁时的空间回收是由系统的垃圾回收机制自动完成的,Java不支持析构方法,在必要的时候也可以创建一个方法来完成存储空间的回收。 当由已经存在的对象建立一个新对象时,C++使用拷贝构造函数,将参数代表的对象逐域拷贝到新创建的对象中。在Java中没有拷贝构造函数,因为实例变量是按引用传递的。 3.1多重继承与接口 多重继承是指一个子类可以有一个以上的直接父类。C++支持多重继承,而Java不支持多重继承,而是使用接口来实现多重继
此文档下载收益归作者所有