zoukankan      html  css  js  c++  java
  • “纯”面向对象

    声明:本文是我在看到 “Java中一切皆对象” 之后的联想,我还专门到知乎上提了这个问题:看书看到Java里面说,Java的一切都是对象,难道八大基本数据类型、函数、数组都是对象么?还有为什么说Java是纯粹面向对象的语言,C++就不是,是因为C++的基本数据类型不是对象么?还是从C那里继承的面向过程的思想?

    因为我现在的知识尤其是实践知识还很欠缺,所以这篇文章大多是我的浅薄之见,您看了笑笑就好。

    由这个问题我还联想到以后在编程实践中应该怎么做,以及一些人生哲学道理。

    1. 为什么C++不是纯粹的面向对象编程语言:

    1) main函数不在任何类里面。
    2)基本的数据类型也不是对象(不像Java有基本数据类型的包装类)。
    3)友元会破坏封装性。
    4)支持独立的函数,数据,即过程化编程。

    5) 存在全局变量和全局函数。

    6) C++要向后兼容C,所以肯定会支持面向过程的编程,此外,还支持基于对象和面向对象。

    参考:http://blog.csdn.net/wind19/article/details/7417544

    2. 为什么Java说自己是完全面向对象的语言:

     就我现在的理解:Java的程序是由类组成的,不管干什么你得先有个类;然后Java的八大数据类型也是有自己对应的封装类的。

     但是很多大神说了,Java并不是纯粹的面向对象编程语言。我有点方。

     其实后来想想,Java这门语言你才接触几天啊,想那么多干嘛,被理论牵绊住,实践就会大打折扣。还是踏踏实实多敲代码吧。

    3. 究竟怎样才算完全(纯粹)面向对象的语言:

     参考:http://blog.csdn.net/wind19/article/details/7417544

    4. 感想:

     我发现我学习编程过于在意理论的表述了,毕竟实践才是检验真理的唯一标准,编程是一门动手能力要求很强的学科,多敲代码才是王道。

     就像这句话:“Java中一切皆是对象”,或者看Python视频里也说Python中一切都是对象,其实就像某些人所说,这些其实都是这些语言打的口号而已,

     很多话是经不起推敲的。试想,Java是从C++发展而来的,当初语言的设计者肯定是先想到从C++中继承数据类型这个说法,还有main函数,这些在当时肯定

     都是自然而然的,谁能想到把数据类型直接设计成对象呢?谁能想到后来它们会成为Java一切都是对象口号的瑕疵呢?

     还有就是C++它爹说过:不要过于追求细节,以免被它灼伤。其实某种意义上这个世界上是不存在完美无缺的事物的。何况是人类创造出来的编程语言。

     完美是不存在的,我们必须有容忍瑕疵的能力。

     所以以后学习编程之路上:第一,实践永远是第一位的,一定要多敲代码!第二,不用过于在意细节问题,不用太在意理论体系的完美,因为很多时候你在纠结于

     细节、纠结于理论的瑕疵的时候,已经严重阻碍了你进步的脚步。

     最后,面向对象仅仅是一种思想而已。编程时思想很重要!

     每种编程语言都有它的优点和局限之处。

    5. Java中数组的存储:

     我知道了,Java中有八大基本数据类型:byte,short,int,long,float,double,char,boolean。然后有三大复合数据类型:class,interface,array。

     对应的变量也分为基本数据类型变量和引用变量。

     其中声明和创建一个数组的过程:int[] args; args = new int[5];(args即是引用型变量)

     Java程序的存储其实分为两个部分:栈存储区和堆存储区。

     所以声明数组时数组名 args 是存储在栈内存中,声明的时候并没有为数组成员分配内存空间。而在创建数组的时候,才通过new运算在堆存储区中

     申请了数组成员的存储空间。然后栈中的数组名就有了值——数组成员的存储首地址。注意:数组成员分配空间时还会为length分配存储空间。

     从这个意义上来讲:数组名其实就是Java语言中的指针!! (但是在Java中却叫引用型变量)

     ps:注意区别和C++中的数组的存储以及数组名的含义。

    6. 希望一两年后我再看到这篇文章时会觉得自己很幼稚很可笑。

  • 相关阅读:
    paip.注册java程序为LINUX系统服务的总结。
    paip.Log4j配置不起作用的解决
    paip.获取地理位置根据Ip
    paip.抓取网页内容--java php python
    paip.java 开发中web server的选择jboss resin tomcat比较..
    paip.c++ 转换 java 解决方案
    paip.java c# .net php python调用c++ c dll so windows api 总结
    SVN的405错误
    怎样开启SQL数据库服务
    C#中读取二维数组每位的长度
  • 原文地址:https://www.cnblogs.com/niuxichuan/p/5241181.html
Copyright © 2011-2022 走看看