今天,学习了面向对象的概念,和大家分享一下我的学习心得:
面向对象和面向过程的两种不同的编程思想影响着每一个程序猿,这两种编程思想甚至会影响我们的世界观。总的来讲,面向过程是我们处理熟悉的问题时采用,而面向对象则是我们处理我们不熟悉或者变化大的问题域时采用,都是一种自然化的体现。
java是一门面向对象的编程语言,所以需要去理解面向对象的思想,进而理解对象和类的概念和他们的关系,最重要的是他们如何使用。为了更好的理解,我们需要知道在定义类时,其每一句指令,在内存中是如何存储和处理的,才能输出我们想要的结果。
在这里我给大家举一个例子,分析一下其在内存中的情况:
首先,定义一个Boy(类名首字母要大写)类:
上面定义好Boy和Girl两个类,下面测试一下:
针对这个例子,我们分析一下其在内存中是如何存储的。(程序执行总是从main方法开始到结束)
第一句Boy boy = new Boy();是定义一个boy对象,在内存中boy里面放着Boy类的引用,由于没我们没有对类里面的属性初始化,所以计算机默认:基本数据类型设为0,引用数据类型设为NULL。所以在这里Boy类里面的boyOfName=NULL。
第二句Girl girl = new Girl();与第一句一样。
第三句boy.boyOfName = "小明"; 指令中“.”可以读作“的”,boyOfName存的是字符串的引用,这条指令是将“小明”的引用赋值给boy.boyOfName,(注意java中只存在值传递,不存在引用或其他传递)
第四句girl.girlOfName = "小花";与第三局一样
第五句boy.kiss(girl); 这条指令调用了Boy类的方法,所以程序执行顺序被打乱,程序进入方法内执行:
public void kiss(Girl girl){
System.out.println(this.boyOfName+"说:亲爱的,亲一个!");
girl.respond();
}
在方法中先打印,再调用Girl类的方法:(类与类之间相互调用:has a/use a 我这里采用的use a)
程序再进入respond方法内:
public void respond(){
System.out.println(this.girlOfName+"说:讨厌,来嘛!");
}
打印后,respond方法结束,返回调用出(即kiss方法内),kiss方法也结束,返回kiss方法调用处即main方法中,main主方法结束,程序运行完毕,方法中的变量全部清除。由此我们就看到我们的输出结果为: