java学习心得(3)

2019-03-16 10:58

Java号称去掉了指针的语法,其实只是去掉了针对指针的操作,而且把指针改了一个名字叫引用,例如上面的程序ElectricProvider ep=new Battery(),我们声明了一个ElectricProvider类型的指针(引用),它指向计算机的内存中的一个地址,这个地址是存储 Battery对象的首地址,后面又执行了一句ep=new Transformer();此时计算机的内存中又存储了一个Transformer类型的对象,这时ep指针中指向的地址就变成了 Transformer类型的对象的首地址。这是我第一次也是最后一次说指针了,因为C++的程序员们对指针很熟悉,所以我把引用称为指针是为了让大家更 好的理解引用的实质,但是以后不会说了,毕竟我们要进军Java领域,以后要尝试着说Java的行话!

4、组合

接着上次的的例子谈谈组合,想想我们买手机的时候除了手机本身是不是已经包括电池了?

没有电池的手机是无法工作的,所以电池应该是手机的一部分,这样说来上面那个例子的手机类的写法就可以做一点小的修改 package blog;

package blog;

public class Mobile {

private Battery battery;

public Mobile(Battery battery) {

this.battery = battery; }

public void setBattery(Battery battery) { this.battery = battery; }

public void work() {

battery.provide(); } }

从这里可以看出,电池已经作为了手机的一部分,另外我又添加了一个public void setBattery(Battery battery)的方法,想一想这个方法是做什么用的呢?如果手机的电池坏了,可不可以换一块呢?这个方法就提供了更换电池的手段。 请看测试函数 package blog;

public class Test {

public static void main(String[] args) {

Battery battery=new Battery(); Mobile mobile=new Mobile(battery); mobile.work();

Battery second=new Battery();//新电池一块 mobile.setBattery(second);//和手机绑定 mobile.work();//手机工作 } }

从测试函数可以看出第一次用构造函数构造了一个手机,然后手机开始工作。之后又创建了一个新的电池对象second用set方法和手机进行了绑定,然后手机就可以继续工作了!

有没有朋友很好奇,你怎么知道电池已经换了呢?好,现在我就告诉你一个证明的小方法。

电池对象battery和second都是存在计算机的内存中,只要能证明它们的存储地址确实不同,就可以证明电池真的更换了。于是可以写一个方法放在手机类中 public void showme() {

System.out.println(\电池的编号是\ }

这个方法输出当前手机对象关联的电池对象的内存地址,我们假设电池的内存地址为电池的编号。通过这个方法就可以在这测试函数中看出结果 package blog;

public class Test {

public static void main(String[] args) {

Battery battery=new Battery(); Mobile mobile=new Mobile(battery); mobile.showme();//输出电池编号 mobile.work();

Battery second=new Battery();//新电池一块 mobile.setBattery(second);//和手机绑定 mobile.showme();//输出更换后的电池编号 mobile.work();//手机工作 } }

运行的结果是

电池的编号是blog.Battery@9cab16 电池供电!

电池的编号是blog.Battery@1a46e30 电池供电!

可以看出编号确实不同,证明电池确实更换过了!

通过这道小题目是不是可以很好的理解组合了?对于面向对象的思想有没有了一点自己的认知?对,面向对象就是这么好学!

如果你还有兴趣我看一给你介绍一个更复杂一点的例子 我们把手机类改成这样

package blog;

public class Mobile {

private ElectricProvider ep;

public Mobile(ElectricProvider ep) {

this.ep = ep; }

public void set(ElectricProvider ep) { this.ep = ep; }

public void work() {

ep.provide(); } }

手机类中不再持有电池类的引用而变成了它的父类ElectricProvider,其他的都没变就轻松的实现了多态,看看测试函数


java学习心得(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:地方国企如何实现党建工作与企业文化建设的有机融合

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: