在说这个问题的时候不得不谈到的就是方法重写
我在JAVA中实现这个代码的时候在方法重写的操作上是十分简单的
在JAVA中返回值可以直接填写对象,但是在C++中需要使用指针才能以派生类的对象
(是否能使用“&”饮用对象暂不清楚,另外何时释放的问题暂时还未研究)
如果使用OOP的思想来写一个下面这样的学生管理系统
效果如下:
人员管理系统:
- 添加人员 2.查询人员信息
请输入功能:1
请输入人员的职称(1.学生 2.员工):1
请输入姓名:sss
请输入年龄:111
请输入学号:12 如果职称是2:请输入工号
添加成功
两者的代码结构上区别不大;
但是值得注意点有几个,
第一:C++中可以直接使用域类名::方法名的方式来直接调用方法。
这个方法在学习两种语言中中会使人有一定的困扰,由于JAVA方面还没有学习static修饰
因此目前的java写法调用方法还停留在必须创建对象的阶段,(个人猜想:而C++中由于
本身就可以使用独立的函数,因此也是可以直接调用函数帮忙做事情的)
第二个注意点:不管是C++中还是java中对象数组所存的都是对象的地址,
我在JAVA中的写法是返回值直接定义为派生类,然后直接将派生类存入基类数组
我在c++d如果按照相同的写法在赋值的时候会报错,因此C++中我使用了基类的指针类型
返回值。
第三,不使用指针类型返回值的情况下直接使用基类作为返回值程序是可以正常运行的
,但是在show方法会使用基类的show方法。并不发生方法重写,我并不知道为何会发生这个问题
使用指针类型的虽然仍然使用的是父类对象的指针但是,存入的是子类对象的地址,此时是会
按照预期发生重写的。
总结:1,java在oop方面作为高级语言的优势是明显的
2,在c++中使用对象为返回值时函数的返回值类型是返回对象的指针指针。如果是继承数组
使用基类指针也可以正确重写和存储子类指针。
3,个人感受:在JAVA可以建立多个类来区分不同的功能模块,在查找时是很方便的。
而在C++中,由于编程规范定义与实现分开的问题,最好在定义的.h文件定义多个类时写好注释
使.h文件更好的作为目录文件让我知道哪个类里有什么方法。在实现的cpp文件中一个类创建一个
CPP文件。