一直听说,C#的精华在于面向对象,可我始终不能理解,何为面向对象?强大在何处?
还有,VB6是不是面向对象的编程语言?两种语言有什么区别?

解决方案 »

  1.   

    VB6中大部分的算法(也叫函数,方法,过程)都是在一个个文件中的,整个工程中的算法按文件访问,无法被继承
    而C#中所有的算法都被类封闭起来(也叫封装),所有算法都按类访问,可以被继承.
    面向对象的语言的精华之处在于多态的实现.也就是一个类的对象,在不同的时刻可以执行不同的算法.
    多态依赖于继承,即父类指针可以指向子类地址.
    当一个类被实例化的时候,他会保留一个指针.这个指针符合其声明类型的接口.如果这个类型具有子类并且这个对象被指向了子类的实例,那么这个指针将指向子类的地址.由于子类具备父类的算法接口,因此父类的对象可以通过指针指向子类的算法,实际上运算的时候,子类的算法将填充到运算中.如果有不同的子类并且这些子类都有自己的一套算法,那么当运算的时候,程序将得到不同的结果.
    更具体的例子请参考《设计模式》,里面描述了面向对象编程的精华部分.
      

  2.   

    楼上的解释有偏差。VB6不是“真正”的面向对象编程语言,指的是VB6不能完整地实现经典面向对象的概念,即封装、继承和多态。典型的表现是VB6无法创建两个类之间的继承关系,也不能定义带参数的构造函数。C#面向对象的强大之处在于不仅实现经典的面向对象模型,还在此基础上发展了委托、匿名、泛型等等现代的面向对象的概念。C#的类实例化的时候,不是保留指针,而是创建元数据,类的相关信息都保存在元数据里,C#安全代码是不支持指针的。
      

  3.   

    面向对象是一种编程思想,核心就是站在事物的本身角度思考问题。
    C++、C#、Delphi、Java都是专门为面向对象设计的语言。
    C#吸取了很多语言的优点,在面向对象上更纯粹。
    思想这东西高于语言,甚至可以汇编来写面向对象的程序。(最终运行都是机器指令)
      

  4.   

    要去理解.net框加的设计和结构
    这就是一个OO的完美体现比如所有的类都直接或间接继承与Object,然后继承了他的Equals,ToString等方法,并进行的重写。
    通过接口定义了一些没有直接关联的类所共同具有的一些方法。而你在写程序的时候,拖一个窗体,也是继承了基类,很好的代码重用等。反正OO是个很大的概念,说也说不清楚,只有自己去理解