java和c++在面向对象过程中的不同(以 “个人银行账户管理程序 ”为例)

以 “个人银行账户管理程序 ”为例

首先说一说c++和java在创建对象时的不同:1.java定义变量名只是创建了一个新的标识符,跟创建对象没有关系,创建对象必须通过 new 来完成,只有创建对象时才会申请内存空间。但在 C++ 中,当你定义了一个变量 s 时,即使你没有给它赋值,也意味着你不但创建了一个新的标识符,同时还在栈中申请了对应的内存空间。因此,C++ 中定义的变量名不仅仅是个标识符,还自动关联着栈中的一块内存空间。而 C++ 中的 new 操作符表示的是在堆中申请内存,因为栈中的内存在运行时期大小是固定且有限的,因此需要动态内存分配的时候就需要用 new 来实现。这类似于 C 里面的 malloc 函数,只不过 new 操作符还封装了其它的操作。

#版本一:

版本一两种语言都是在一个类中就实现了所有功能,但内部函数的声明及实现还是有所不同的。
在C++的SavingsAccount类中,函数的声明和实现是分开来写的,先对所有的成员函数进行声明,声明时又将私有成员和共有成员分块(只用一个private或一个public就能声明多个类型相同的函数)而且最后再将所有的成员函数统一实现,最后再由main函数调用,整体结构层次分明,可读性强。
java中:与c++不同的是,java中的函数的声明和实现不能分开写,是要同时完成的,结构没有c++中那么分明;此外,java中的成员函数的声明中,若为私有成员则每个函数声明中都要写private,同理,若为公有成员则都要写public,这一点远不及c++中的简便。

版本二:

c++将这一程序分为了三个文件,第一个是为函数声明的头文件,在SavingsAccount类中将所有成员函数进行声明,第二个文件里写是成员函数的实现,首先要在开头导入头文件,然后再实现函数;最后一个文件中写的是main函数,也需要导入头文件,然后在main函数中对各个函数进行调用即可,依然是层次分明,增加可移植性。
java中只写了两个类,一个用于函数的声明和实现,另一个则用来写main函数,不同的是,在java的main函数中首先要创建对象和声明引用,然后再用引用去调用函数成员来实现功能。
版本二中开始运用了封装的思想,使用private对成员属性进行修饰,只能用set和get方法对所修饰属性进行修改和读取,而且还可以在set和get方法中加入筛选条件以选出用户想要的结果和避免不合法的操作。封装之后才会形成真正的对象,增强了程序的适应性,而且还提高了程序的安全性,正适合用于银行系统中对用户的账号,密码,存款等属性的保护。

版本三:

首先,版本三中创建了对象数组,用一个数组来存储多个对象,采用了" 数组名.方法名”的方式对函数进行调用;其次,版本三多出来一个date类,使得程序的功能更加丰富,在简单的存取款和显示余额的功能上加入的date类,以便于显示操作日期,更符合用户的需求。新增一个date类使得代码更加灵活,便于修改和重复使用。

版本四:

版本四中运用了继承的思想,继承的基本作用是代码复用,将父类中方法拿到子类中进行使用,更重要的作用是有了继承之后才有方法覆盖和多态机制。
c++语言当中的继承支持多继承,一个类能同时继承很多类,c++中继承是的格式为:子类名+::+父类名,如:class CreditAccount : public Account,版本四中CreditAccount和 SavingsAccount都为Account的子类。
java语言只支持单继承,一个类不能同时继承多个类。java中继承的格式为:子类名+extends+父类名。在写java代码时我还遇到了空指针异常的错误,花了好长时间才找出错误,错误的原因是声明了引用,但没有给引用开辟空间,这也反映了c++和java在创建对象上的不同。

版本五:

在java的代码里,mian函数中创建好SavingAccount和CreditAccount两个字类型的对象,然后用父类型数组引用accounts来存储两个子类型的对象,在后面调用子类中的方法的时候直接用“数组.方法名”的方式来调用。在c++的代码里则是用父类型的指针数组来存储子类对象的地址。 版本五中充分体现了多态的特性,个各类定义好之后,将类实例化为对象,在各个对象之间建立联系,让各对象协作起来形成一个系统。多态能降低程序的耦合度,提高程序的扩展力。

版本六:

版本六中使用了容器来代替数组,两者之间的区别如下:
1.数组可以存储基本数据类型,也可以存储引用数据类型;容器类不以具体的类型来处理对象,而是将所有的对象都以Object类型来处理,所以我们可以只创建一个容器,任意的Java对象都可以放进去.容器类可 以使用包装类(Integer,Double等),以便把基本类型放入其中. List Set Map 都可以自动调整容量,数组不能。
2.数组是固定长度的,集合的长度是可变的。知道数组的长度,而且以后也不会再增加,那肯定就使用数组了;如果数组的长度不定或者说是长度会增加,为了方便起见使用容器。
3.  数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值