zoukankan      html  css  js  c++  java
  • 面向对象之面向对象思想

    前言

    二胖在学习完了一些Java语言基础知识之后开始学习面向对象思想,二胖知道这一思想对后续的学习很重要并且二胖之前接触过C语言,他知道C语言是面向过程的,那这面向过程思想与面向对象思想之间有啥区别呢,这两者又是怎样进行演变的呢?二胖决定与班里的学霸小桂交流交流。

    正文

    以下为二胖与小桂之间的对话:

    • 二胖:小桂小桂,今天老师讲的面向对象思想你是咋理解的啊?我感觉这还是挺符合人们的思维习惯的。

    • 小桂:你说得对。关于我咋理解这个,我先问你个脑筋急转弯吧。

    • 二胖:你问,我肯定能知道!

    • 小桂:把大象放进冰箱需要几步?把长颈鹿放进冰箱又需要几步呢?

    • 二胖:哈哈哈哈,这我知道。第一个需要三步:打开冰箱,把大象放进冰箱,关闭冰箱;第二个要多一步,因为需要先把大象拿出来嘛。

    • 小桂:哈哈哈,二胖,看来你还真是见多识广。

    • 二胖:谢谢夸奖啦,不过这跟我问你的问题有啥联系呢?

    • 小桂:当然有啦,你想想看你思考这个问题的过程,是不是按顺序一个步骤一个步骤地执行下去

    • 二胖:当然是啊!

    • 小桂:其实这就是所谓的面向过程思想啦,它强调的就是这个过程

    • 二胖:原来是这样的。听你这么说的话,我好想有点理解了。

    • 小桂:说来听听。

    • 二胖:你看,随着现在生活条件水平的逐步提高,人们对效率的要求也越来越高了,以前注重过程的思想慢慢地也就转变为注重对象啦,具体来说就是寻找符合自己需求的对象嘛!

    • 小桂:哦?此话怎讲呢?

    • 二胖:举个例子:你看假设你想买个手机,按以前的思考方式,那肯定就是先上网做攻略嘛、再去实体店看、接着还要砍价,最后才能买到,太麻烦了,效率也很低。但是如果按照现在这种思考方式的话,你直接找个懂手机的朋友帮你去买就行了嘛。是不是简单多啦!你一下就从过程中的执行者变成了对象的指挥者啦!

    • 小桂:二胖你说得真好!这可能就是老师说的"有对象使用对象,没对象造对象再使用对象"的含义吧。

    • 二胖:是这样的。不过小桂我还有个疑惑。

    • 小桂:你说。

    • 二胖:我们之前写Hello World程序时,里面有个类,那这类和这面向对象的对象有啥联系吗?

    • 小桂:二胖你观察得可真仔细,这两者当然有关系啦,Java语言其实就是通过类来描述现实生活中的事物的,具体来说是通过属性和方法进行描述的。举个例子:你看大街上的汽车,它们虽然都是汽车但是轮胎数和车的颜色都不一样。

    • 二胖:是的!我明白了,大街上的这些汽车其实是"汽车"这类事物的实例。

    • 小桂:你说得对,并且这个实例可以通过new这个关键字创建,你看下面这段代码:

    
    class Car {
        int num;
        String color;
    
        void run() {
            System.out.println(num + "..." + color);
        }
    }
    
    class CarDemo {
        public static void main(String[] args) {
            // 在计算机中通过new关键字创建一个Car的实例
            Car c = new Car();   // c就是一个类类型的引用变量并且它指向了该类的对象(实例)
            c.num = 4;
            c.color = "red";
    
            c.run();   // 要使用对象中的内容可以通过"对象.成员"的形式来完成调用
        }
    }
    
    

    这个num和color其实就是Car这个类具有的属性,这个run呢其实就是Car这个类拥有的方法,怎么run当然是Car最清楚嘛,这需要发动机、变速箱、传动系统的协同合作才可以。人们只不过是调用这个方法就可以了。其实这里的属性和方法还有一个名称那就是成员

    • 二胖:哎!小桂,Java和C++中都有一种变量叫局部变量,那这成员变量与局部变量之间有啥区别

    • 小桂:啊!这个。你听我给你总结总结。

    
    1、从定义位置看:
    成员变量定义在类中,整个类都可以访问;
    而局部变量定义在函数、语句、局部代码块中,只能在所属的区域中访问。你看,"局部"嘛。
    
    2、从存储位置看:
    成员变量存在于堆内存的对象中;
    而局部变量存在于栈内存的方法中。
    
    3、从生存周期看:
    成员变量随着对象的创建而存在,随着对象的消失而消失;
    而局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。
    
    4、从初始化看:
    成员变量都有默认初始化值;
    而局部变量没有默认初始化值。
    
    
    • 二胖:原来是这样,我可得好好领悟领悟。

    • 小桂:加油!

    • 二胖:好的。不过今天老师说在Java世界里,万物皆对象。这句话是咋理解的啊?

    • 小桂:我们现在理解这个还是有点困难,毕竟对面向对象思想的理解还是需要逐步深化的,加油吧。

    • 二胖:好,一起加油!

  • 相关阅读:
    电商总结(二)日志与监控系统的解决方案
    倾力推荐,哪一本让你想要加入书单
    电商总结(一)小型电商网站的架构
    聊一聊如何提升团队开发效率
    Nancy总结(三)Nancy资料介绍
    【推荐】2016年不得不读的九本好书
    Solr学习总结(七)Solr搜索引擎的整体架构
    再见 2015,你好 2016
    Solr学习总结(六)SolrNet的高级用法(复杂查询,分页,高亮,Facet查询)
    Solr学习总结(五)SolrNet的基本用法及CURD
  • 原文地址:https://www.cnblogs.com/syhyfh/p/12438985.html
Copyright © 2011-2022 走看看