对java语言"完全"面向对象的理解

java语言是面向对象的语言,也可以表示为java是面向类和接口编程的语言,就我而言,我个人认为
java里面static方法和引用不是面向对象的,java里面的引用容易理解就相当于c语言的指针,java里面的对象就是指针,只是换了个名字而已,只是操作起来效率没有c语言中指针高.
而对于static方法,我们在使用static方法时,由于不存在this,所以java不是通过向对象发送消息
的方式来完成,这样理解的话,我认为java里面的static方法,并不是完全面向对象的.
Java是非常“面向对象”的语言(尤其和现在同样非常火的C++相比,Java是单根继承结构),static
方法,却不是“面向对象”的。因为它们具有全局函数的语义,使用static方法时,由于不存在this,
所以不是通过“向对象发送消息”的方式来完成的。所以我认为,因为存在static方法,Java并不是完全的“面向对象”语言。如果一段代码中出现了太多的static方法,那就该重新考虑自己的设计.

Java是单继承,但它有接口(interface),解决C++里面多重继承带来的问题.main方法必须是static,
因为只有使用main方法是入口,也就是说,jvm要执行,就必须从 main方法开始,static可以不用创建实例就可以调用该方法。那么,JVM就可以在没有初始化这个类的任何实例前就调用main.所以这个不是OO设计的问题,因为一个程序肯定要有入口.static一般是向其他类提供工具,所以经常把许多static函数封装到一个类里面,比如说常用的System.out.println....等都是封装好的静态方法,用来提供一些常用功能,避免自己的重复实现.

综上所述,对java里会出现一些非面向对象的东西和一些非他所宣传的东西,例如指针,实际上是
存在的,只是换了个名字而已,叫引用,并且操作不像C那么自由了,而且效率也没有C高,之前从`博客上面看到然有部分人对这个的理解,然后自己拓展开来谈一下自己的理解.
发布了32 篇原创文章 · 获赞 115 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/bryant_liu24/article/details/43406983