黑马程序员技术交流社区

标题: 初入黑马,谈谈对面向对象的理解。 [打印本页]

作者: bipanfei    时间: 2015-3-16 00:00
标题: 初入黑马,谈谈对面向对象的理解。
来黑马学习已经快10天了,这是第一次发帖子,写总结,但是明明知道没什么技术水准,发出来也是在各位大神面前班门弄斧,不过也算是这几天的收获了,所以还是发表出来和大家讨论讨论。
首先,谈谈我这几天的感想,我觉得每一位同学都那么勤奋,基本上都是一天除了吃饭睡觉就是在学习,黑马不愧是一个训练精英的地方,整体上给我的感觉压力很大,竞争很强力,同学们很上进,非常有学习的氛围,比方自己想偷懒玩一会,放松一会,和别人的差距都会越来越大,简直是一刻不敢放松,所以首先感觉黑马提供这么好的学习氛围,提供一个可以让我和这么多大神精英们一起学习的机会,我相信这也是我人生的转折点。下来谈谈我学习10后,对面向对象的总结。
自我理解,前几天学习的java的概念,程序,数据类型,运算符,语句,方法,数组等,都是面向过程的思想,也就是自己完成定义过程,得出结果,而学习面向对象之后,我觉得我们平时就是面向对象做事情,比如在现实生活中的任何一个实体都可以用对象来表示,比方说我们每个人,人这个个体有他的一些属性比方你的名字,性别,年龄等等),还有一些行为,比如人可以吃饭也一睡觉可以讲话等等,这样就构成了一个实体的对。我们对这个个人再进行一个抽象,抽象也就是寻找我们个体的共性,我们每个人的共性就是我们是人,这样我们就有了类的概念-对象的抽象!这样我们可以得到对象与类之间的关系,对象是类的实例,实例的抽象是类!所以我们只需要写出一个,就可以实例化许多对,想想人类和我们每个人的关系,这个实例化是通过new 。总结就是这些,目前也学习到这里,等到下个知识点,再来分享理解。
下面是我自己笔记做的归纳总结: 众所周知,java中的面向对象的三大基本特征是:【封装】、【继承】、【多态】
一、封装
        对象要有一个明确的边界;边界的划分(对象各司其职、对象的粒度、对象的可重用性)
        具体来说:
                1.属性: 私有 private(提供set和get方法)
                2.方法: 公开或私有public/private
                3.方法声明 --> 公开
                  方法实现 --> 隐藏
                 实现改变时,对对象的使用者没有影响。
二、继承
              共性放到父类,特性放到子类;父类 --> 子类,其实就是特殊 --> 一般
        1.关键字: extends  例如:Dog extends Animal{}
        2.java中一个类最多只能有一个直接的父类,即单继承(具有简单性、树形结构),
          C++中是单继承
          java中要实现多继承,通过接口来实现。
        3.父类中所有属性和方法都能继承给子类;父类中的私有方法不能继承给子类。
        4.
                          访问权限                     继承 
         private        本类内部                   不能继承        
           default        本类+同包              同包子类可以继承           
           protected      本类+同包+不同子包         可以继承
           public         公开                       可以继承
        5.构造对象过程
                   (1)分配空间
                   (2)递归地构造父类对象
                                a. 父类 初始化属性
                                b. 父类 构造方法
                   (3)初始化属性
                   (4)调用构造方法
        6.super  
               用法:
                   super()  调用父类的构造方法,只能出现在构造方法的第一行
                   super.方法名   super表示父类的对象,通过它去调用父类的方法
               注意:在写类的时候,一定要写默认无参的构造方法,如果一个构造方法的
                     第一句既不是this(),也不是super()时,那么就会在这里隐含的调用
                     他的父类的无参的构造方法,即隐含的有super()。
三、多态
            运行时多态。
            子类的对象放在父类的引用中,例如 Animal a=new Dog,子类对象当父类对象来使用。
        1.多态原则:
                  (1)对象类型不变
                  (2)只能用引用调用其引用类型中定义的方法
                  (3)运行时,根据对象的实际类型去找子类覆盖之后的方法
             例子:
                  有Animal类中有eat()和sleep()两个方法,sleep()中睡8小时;子类Dog中有
                  eat()方法,sleep()方法中睡6小时,还有wangwang()方法。
                  现创建Animal a=new Dog(); 不能调用a.wangwang(),调用a.sleep()输出睡6小时。
      
         
         2.多态的灵活变换
                  (1)用于参数列表上:
                               public void m(A a){} 可以用A类的任何子类对象作为参数
                  (2)用在返回值上:
                              public A m(){}  这个方法可能返回A类的任何子类对象


作者: liuzf006    时间: 2015-3-16 00:11
兄弟,得顶下,加油!
作者: 我只适合被遗忘    时间: 2015-3-16 00:18
顶下。。。。
作者: 和谐木马    时间: 2015-3-16 00:30
LZ进就业班了?就要成为大神级的人了!顶下!
作者: gaopeng868988    时间: 2015-3-16 08:44
你能进黑马说明你的Java基础已经很棒了。
作者: 执梦而行    时间: 2015-3-16 11:32
顶一个,学习了
作者: ibectjs    时间: 2015-3-16 14:15
不错,有一个良好的学习氛围要好好珍惜在校学习的时间,
作者: dxf578939729    时间: 2015-3-16 16:22
总结的不错,借鉴借鉴
作者: Normandy1943    时间: 2015-3-16 22:27
同学赞赞赞:lol
作者: a410709560    时间: 2015-3-16 22:29
so nice,顶一个
作者: rhui    时间: 2015-3-16 22:29
学的好快,学渣正在努力中
作者: 小田    时间: 2015-3-16 22:32
大赞,我在自学不过感觉效果不是很好
作者: 鹏少    时间: 2015-3-16 23:13
bipanfei 发表于 2015-3-16 00:00
来黑马学习已经快10天了,这是第一次发帖子,写总结,但是明明知道没什么技术水准,发出来也是在各位大神面 ...

哈哈黑乎乎
作者: 发发呆骄傲    时间: 2015-3-16 23:38
不错不错 菜鸟成长之路 虽然艰辛但是痛并快乐着
作者: jeasonlzy    时间: 2015-3-16 23:46
加油。。
作者: HMjack168    时间: 2015-3-17 00:20
向楼主看齐!
作者: 罗锐卫    时间: 2015-3-17 00:44
顶一个,学习了,加加油




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