zoukankan      html  css  js  c++  java
  • 什么是面向对象?

     XXX语言中一切皆为对象!对象是从我们现实生活中抽象出来的一个概念,俗话说物以类聚,人以群分,对应到计算机术语,类就是class,定义了一些特点(属性 property)和行为(方法 method),比如说给隔壁制造惊喜的这类人有几个特征

        1.长相文质彬彬,为人和善

        2.姓王

      同时这些人还有技能(行为)

        1.帮隔壁修下水道

        2.亲切问候对方儿子

    我们刚才就描述了一个类,用代码表示就是

    class LaoWang{
        string name;
        string familyNmae = "wang";
        bool isKind = true;
    
        LaoWang(string name){
            this.name = name;
        }
    
        void fixPipe(){
            statement
        }
    
        void greetSon(){
            statement
        }
    }

      符合这些特点并且有上述行为能力的,我们称之为老王,从描述我们就可以看出来LaoWang不是指某个人,而是指一类人,符合上述描述的都可能是老王!用计算机术语说就是没个活蹦乱跳的老王都是类LaoWang实例。用代码描述就是

    LaoWang lw1 = new LaoWang("yi");
    LaoWang lw2 = new LaoWang("er");
    ...
    LaoWang lw1000000 = new LaoWang("baiwan");

      可以看出我们能够根据类LaoWang实例化出成千百万个老王来,老王不是一个人在战斗!

    封装

      刚才我们说的已经涉及到了对象的一个重要特性——封装

    以前我们可能会有这样的描述

    王一长相文质彬彬,为人和善,姓王,有技能帮隔壁修下水道、亲切问候对方儿子
    王二长相文质彬彬,为人和善,姓王,有技能帮隔壁修下水道、亲切问候对方儿子
    王三长相文质彬彬,为人和善,姓王,有技能帮隔壁修下水道、亲切问候对方儿子
    王四长相文质彬彬,为人和善,姓王,有技能帮隔壁修下水道、亲切问候对方儿子
    ...
    王百万长相文质彬彬,为人和善,姓王,有技能帮隔壁修下水道、亲切问候对方儿子

    有了对象的思想我们可以这样说了,首先定义一类人

    有那么一类人
    
    1. 长相文质彬彬,为人和善
    2. 姓王
    
    同时这些人还有技能(行为)
    
    1. 帮隔壁修下水道
    2. 亲切问候对方儿子

    然后是实例化,也就是对号入座

    王一是老王
    王二是老王
    ...
    王百万是老王

    也就是我们通过类来描述一套规则,其中包括

    1. 属性
    2. 行为

      对于这个类实例化出的对象,也就是副歌这个类描述的对象,不用去关心对象细节,我们认为符合类的描述,就会有类规定的属性和方法,至于每个方法具体实现细节不去关注,比如老王怎么给人修水管,我知道他有修水管的技能,然后用的时候让他去修就好了(只要不修我家的)

    我们称这种隐藏细节的特征叫做封装

    继承...

    多态

      这里我们要区分一下“基于对象”和“面向对象”的区别。

    基于对象

      通常指的是对数据的封装,以及提供一组方法对封装过的数据操作。

    面向对象

      则在基于对象的基础上增加了多态性。所谓多态,就是可以用统一的方法对不同的对象进行同样的操作。当然,这些对象不能完全不同,而需要有一些共性,只有存在了这些共性才可能用同样的方法去操作它们。A 和 B 在继承关系上都有共同的祖先 R ,那么我们就可以把 A 和 B 都用对待 R 的控制方法去控制它们。

      

      总结:其实javascript整个都是面向对象的思想,学习js就是学习各种工具包,然后使用工具包开发。面向对象编程就是先把工具包开发出来,这些工具包中包含很多小工具,然后我们使用一个一个工具将整体功能就像搭积木一样搭建出来。工具包中一般包含很多工具,工具可以是属性,也可以是函数。

    编程思想:

      1. 先分析需要哪些工具包
      2. 然后依次开发每个工具
      3. 然后再使用已经写好的工具包实现我们想要的功能

    那什么又是面向过程呢?

      

  • 相关阅读:
    linux防火墙,高级策略策略实例详解(实例一)
    ftp文件共享服务详解
    使用nmap 验证多种漏洞
    powerCat进行常规tcp端口转发
    1111
    powershell下ssh客户端套件实现
    powershell加载EXE进内存运行
    44
    面对问题 认清自己
    22
  • 原文地址:https://www.cnblogs.com/vicky1018/p/7694247.html
Copyright © 2011-2022 走看看