黑马程序员---Java面向对象编程思想小结

-----Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


面向对象语言的概念性的东西就不阐述了,大家见的多了,多说也是无益。

简单说说我最近学习到的关于面向对象编程的一些知识点。


张孝祥老师总结的一句话对我很受用:谁拥有数据,谁就对外提供操作这些数据的方法。


首先还是说说他那个经典的例子:人在黑板上画圆。

简单一句话,就带出了三个对象:人,黑板,圆。

那么画圆的方法归于哪个对象呢?

我们可以用前面提到的公式,“谁拥有数据,谁就对外提供操作这些数据的方法”,显然,画圆需要圆的圆心与半径,圆拥有数据,故圆提供画圆的方法。


接下来有一连串的例子:

1.人开启电脑

对象:人、电脑

开启电脑方法的归属:电脑

分析:人对象操作电脑对象,通过调用电脑对象的开机方法达到开机的效果。之所以让电脑对象具备开机方法,是因为电脑开机时内部进行的大部分复杂的操作人不需要知道,由电脑封装了这些数据就可以了。

2.小猫钓鱼

对象:猫、鱼竿、鱼

钓鱼的方法归属:鱼竿

分析:猫对象操作鱼竿对象,通过调用鱼竿对象的钓鱼方法达到钓鱼的效果。因为鱼竿持有鱼钩、鱼漂等引用数据,所以由鱼竿来实现钓鱼方法是最为合理的,它只需要向猫对象返回当前的状态即可。


面试题:

1.小球从绳子的一端移动到了另一端

对象:小球、绳子 移动方法的归属: 小球

分析:小球移动,需要的数据有自身当前坐标,和下一目的坐标。这些坐标数据由绳子持有,所以小球对象必须与绳子对象绑定,小球移动需要调用绳子的提供坐标的方法。有人可能会疑惑,说为什么不让绳子具备移动的方法,但是仔细想想就会知道,移动的是小球,而不是绳子,绳子只能提供小球移动时需要的坐标数据,如果绳子自身移动,那么它移动时的数据由谁来提供呢?这不符合实际。


2.两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子。

对象:石头、石刀、树、木材、椅子

分析:这里要解决的第一个难题,就是石头磨成石刀方法由谁持有。如果石头对象持有,它调用这个方法自身就被销毁了,这显然说不通,更不可能是石刀持有,因为它那个时候还不存在。所以我们增加一个对象,一个工厂对象,由它持有把石头磨成石刀这个方法,接收石头对象,返回石刀对象。石刀持有砍树方法,接收树对象,返回木材对象。木材做成椅子,跟前面石头磨成石刀类似,我们仍旧让工厂对象持有把木材做成椅子方法,接收木材对象,返回椅子对象。


java语言和c语言最大的不同就是其编程的思想,我从开始学了c,到现在开始学习java,很多时候感觉两者写出来的代码几乎时一样的。但是慢慢的,越往后面学就越清楚,是不一样的,可能看上去大同小异,函数内部的算法没什么区别,但是思想是截然不同的。

学好java的第一步,就是深刻理解面向对象编程思想。

你可能感兴趣的:(黑马程序员)