黑马程序员技术交流社区

标题: 面向对象难以理解的知识点,有没有好的理解方式 [打印本页]

作者: 赵贺景    时间: 2014-5-7 19:27
标题: 面向对象难以理解的知识点,有没有好的理解方式
本帖最后由 赵贺景 于 2014-5-7 23:28 编辑

面向对象可以理解为专门制定的一类用以解决反复调用此方法的情况,代码重用,优化重复写代码的效率.
还可以节约内存.独立于外,相互不会影响.
结构和类的区别
封装,继承 多态
重写 和调用等
书面释义有点难以理解,有没有简单明了的图例 或者关系图
能有助于 理解啊,

作者: 王运波    时间: 2014-5-7 20:02
  结构与类的区别:
结构为值类型;声明方式关键字为static;在引用时不用生城市里对象;结构不能继承,也不能被继承;没有默认构造函数;
类为引用类型;声明关键字为class;在引用时,必须生成实力对象,再能引用类成员;而类可以继承;可以自定义构造函数;
作者: 王运波    时间: 2014-5-7 20:03
选择结构还是类:
1.堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些
2.结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有1000 个点对象的数组则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。
3.在表现抽象和多级别的对象层次时,类是最好的选择
4.大多数情况下该类型只是一些数据时,结构时最佳的选择
作者: 王运波    时间: 2014-5-7 20:07
  封装:
1.我个人理解为打包,可以避免重复使用一段代码而引起的代码乱。(在重复使用时直接引用。)
2.属性的封装,为了保障代码的正确性,不被外部干扰,好似加个保护壳。
作者: 王运波    时间: 2014-5-7 20:17
继承:
我个人也是理解为可以减少冗余代码,对于相同性质的代码可以采用继承来节约空间。使代码逻辑看起来更加清晰:
比如:定义动物类,而动物都有颜色,叫声的大小,分布的范围,还有父母。
     而当你要使用有关狗的类时,可以直接继承动物类的通性成员,并定义有关狗的特殊成员,如咬人,跳,跑等方法,继承后可以直接使用。
    而在实例化时可能你还需要更加精确的定义一个具体的狗类,比如,贵宾犬,因为他有狗与动物的通性,可以直接继承狗类,并添加一些针对贵宾犬的特殊成员,在需要时都可以引用。
作者: 王运波    时间: 2014-5-7 20:19
多态:
在初学时只用知道  运行时多态:虚方法“不确定方法”和复写“多种方法复合”实现。    编译时的多态:重载。
作者: 王运波    时间: 2014-5-7 20:22
重写:
override
在继承时,有些父类成员与子类成员差别比较大,而子类中又要用同样的成员,就会用到重写,利用重写可以重写父类中的方法,来适应于子类对象。
作者: 王运波    时间: 2014-5-7 20:24
     怕写一堆你看这乱,所以分开了。        只代表我个人的理解方式。   一定要形成自己对这些概念的理解形式。
多与现实生活相结合。       因为我个人就觉得编程就像是在创造世界。
作者: panwenbo1990    时间: 2014-5-7 22:23
结构体和类同样能够定义字段,方法和构造函数,都能实例化对象,这样看来结构体和类的功能好像是一样的了,但是他们在数据的存储上是不一样的(以下摘录):

C#结构体和类的区别问题:在C#编程语言中,类属于引用类型的数据类型,结构体属于值类型的数据类型,这两种数据类型的本质区别主要是各自指向的内存位置不同。传递类的时候,主要表现为是否同时改变了源对象。

C#结构体和类的区别技术要点:

    ◆类在传递的时候,传递的内容是位于托管内存中的位置,结构体在传递的时候,传递的内容是位于程序堆栈区的内容。当类的传递对象修改时,将同时修改源对象,而结构体的传递对象修改时,不会对源对象产生影响。

    ◆在一个类中,可以定义默认的、不带参数的构造函数,而在结构体中不能定义默认的、不带参数的构造函数。两者都可以定义带有参数的构造函数,通过这些参数给各自的字段赋值或初始化

代码运行如下:类中赋值以后,两个对象中的值都发生变化,而结构体原来对象的值为发生变化

详细请看链接:
http://www.cnblogs.com/siri/archive/2012/10/31/2748559.html

作者: 赵贺景    时间: 2014-5-7 23:21
只能慢慢在实践he习题中理解le
作者: czwanglei    时间: 2014-5-8 09:54
短的时间没有什么捷径,时间长了,理解就深了。。多敲代码。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2