Java第一次实验总结

第一次实验是让我们将一个银行管理系统的C++改写成Java代码,这里说一下自己在改写过程中的体会。

C++与Java的区别

1. C++中方法声明可以和实现分离

在C++中可以将类定义和方法的声明放在一个头文件中(.h文件),然后将方法的实现体放在与头文件同名的源文件中(.cpp文件),但在Java中则必须将方法声明与实现写在一起,

2. Java中抽象方法与C++的纯虚函数相对应

Java中用abstract修饰的方法称为抽象方法,含有抽象方法的类称为抽象类,抽象方法只能有声明,不能有实现,其具体的实现要由继承了抽象类的具体类来实现,也就是说具体类必须覆盖抽象类的抽象方法;
在本实验中,抽象类为Account,抽象方法有以下三个:

abstract public void deposit(Date date, double amount, String desc);
abstract public void withdraw(Date date, double amount, String desc);
abstract public void settle(Date date);

在C++中,与抽象方法对应的是纯虚函数,即用virtual void function() = 0;定义的函数,纯虚函数也是没有实现,其实现代码必须有子类来指定,在本实验中C++版的Account类中纯虚函数的声明如下:

virtual void deposit(const Date &date, double amount, const std::string &desc) = 0;
virtual void withdraw(const Date &date, double amount, const std::string &desc) = 0;
virtual void settle(const Date &date) = 0;

3. Java中没有与const对应的关键字

在定义常量这一点上,Java中的final与C++中的const的作用一直,但const修饰函数和修饰形参时还有其他的作用,而Java中则没有关键字来修饰形参,用final修饰方法时的作用是防止该方法被子类覆盖,这与C++中const修饰方法的作用也不同。

4. 对象声明与引用的区别

假设有一个类为Account,在C++中通过Account account;的方式直接生成了一个Account对象,而在Java中Account account;并不会创建一个对象,而仅仅是声明了一个对象引用,在Java中需要通过new Account();来创建对象,然后将对象引用account指向创建的对象,所以对象引用与对象创建的步骤是分开的。

5. 传参时的区别

在C++中,参数传递是默认是值传递,不管参数是什么类型都是值传递,如果需要引用传递的话则需要在形参中加入&符号,表示将实参的地址传给形参,引用传递的优点是效率很高,且节省了内存;在本实验中void deposit(const Date &date) 中的date就是引用传递;

在Java中,参数传递时有值传递和引用传递两种,当要传递的参数是普通数据类型时是值传递,当要传递的参数是复杂数据类型(如对象,数组)时则是引用传递,而无需显式指定要使用哪种传递方法,相比C++会更简洁一些,但使用时要时刻注意参数的传递方式。

6. 语法的区别

C++与Java在语法上的区别不是很大,if...else, while, for, switch语句的使用方法都是一样的,此外每条语句都需要一个分号(;)作为结束符。

在使用对象调用方法这一点上,Java中是通过点(.)来调用,如accounts.add,在C++中如果是普通的对象的话,那么则通过点(.)来调用,如果是对象指针的话,则通过->来调用对象的方法。

Java中不支持多继承,即一个类只能继承一个父类,因为多继承会让继承关系非常复杂,但C++中可以多继承。

总结

总的来说,Java比C++简洁一些,因为Java隐去了C++中最令人头痛的指针,但其实Java中的引用就是指针,只不过Java默认使用了引用,而无需让程序员来选择,这就帮助程序员减少了很多负担,程序员只需要谨记这是引用即可;

另一方面,Java的体系架构很完整,从JDK到JRE再到JVM,各种基础库、并发库、IO库、网络编程库都非常全面,并且效率很高。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值