黑马程序员技术交流社区

标题: Java重中之重的知识点----面向对象总结 [打印本页]

作者: 高盖茨    时间: 2015-12-7 23:22
标题: Java重中之重的知识点----面向对象总结
面向对象:
        什么是面向对象?
                1、面向对象是基于面向过程,面向对象强调的对象,面向过程强调的是过程(函数)。
                2、聊到面向对象,不得不提的就是它的三个思想特点:
                        A:更符合咱们人们的思考习惯。
                        B:把复杂的事情变得简单化。
                        C:把程序员从执行者变成了指挥者。
                3、举例:
                         摊煎饼,买电脑(最好是能结合当时的场景来说)
                4、万物皆对象。
       
        面向对象(程序)开发:
                就是不断的创建对象,使用对象,指挥对象做事情。

        面向对象(程序)设计:
                指的就是维护 各个对象之间的关系。
                推荐:
                        UML统一建模语言
                        人:闫闳

        三大特征:封装,继承,多态。

        核心概念:
                类: 属性和行为的集合,一个抽象的概念。
                对象:类的具体体现,实现。
                属性(成员变量):名词,用来描述事物身上的信息的
                        和以前咱们写局部变量一样,只不过位置发生改变,现在写在类中,方法外。
                行为(成员方法):动词,事物能做什么
                        和以前咱们定义方法是一样的,先把static去掉。

                Java语言最基本的单位是:类。
                计算机最基本的存储单位是:字节。

        如何使用类中的内容:
                1、创建该类的对象。
                        格式:  类名 对象名        = new 类名();
                                        Student s = new Student();
                2、通过 对象. 的形式调用。
                        调用成员变量:
                                对象名.成员变量
                        调用成员方法:
                                对象名.成员方法
        从现在开始,咱们可以在一个Java文件中写两个类,
                一个是基本类,
                一个是测试类(就是带main的类,用于测试基本类中的内容的)。
                文件名必须和测试类的名字一致。

        学生类:Student
                属性:姓名name,年龄age,性别gender
                行为:学习study,睡觉sleep

        手机类:Phone
           属性:品牌(brand) ,价格(price)
           行为:打电话(call),发信息(sendMessage),玩游戏(playGame)

  汽车类(Car)
          属性:车的颜色(color),车的轮胎个数(num)
          行为:车会跑(run)



内存:
        栈:局部变量  代码的执行。
                特点:先进后出。
                          用完就释放。

        堆:所有new出来的东西(对象)
                特点:
                        没有任何引用指向该对象,该对象就是垃圾,会在不确定的时间被GC(Java中的垃圾回收机制)回收。


局部变量和成员变量的区别:
        1、在类中的定义位置不同。
                局部变量:方法中,或者方法形参上。
                成员变量:类中,方法外。
        2、在内存中的存储位置不同。
                局部变量:栈
                成员变量:堆
        3、生命周期不同。
                局部变量:和方法相关。
                成员变量:和对象相关。
        4、初始化值不同。
                局部变量:没有默认值,必须先定义,在赋值,然后才能使用。
                成员变量:有默认值。
                        整型:0
                        浮点型:0.0
                        字符:'\u0000'
                        布尔:false
                        引用类型:null

        在使用变量的过程中, 查找变量的顺序是什么?
                遵循”就近原则“,局部位置有就使用,没有就去成员位置找,有就是用,没有就报错(不严谨,先这样记忆)。

                当我们看到一个方法的形参的数据类型是一个自定义类型的时候,其实要的就是这个类的对象
        匿名对象:
                概述:指的就是没有名字的对象。
                应用:
                        A:当对 对象(成员)方法仅调用一次的时候。
                        B:匿名对象可以作为实际参数进行传递。


封装:
        概述:隐藏对象的属性和实现细节,仅对外提供一个公共的访问方式。
                 怎么隐藏?
                        通过private关键字来实现封装。
                                private:
                                        是一个权限修饰符。
                                        可以用来修饰成员变量和成员方法
                                        被它修饰的内容,只能在本类中被访问。

                                注意:暂时理解即刻,第十天还会重点讲。
                                          权限修饰符:private 默认 protected public

                                封装指的就是private,这句话对吗?
                                        不对,因为private仅仅是封装的一种体现,我们学过的类,函数都是封装的体现。

                 公共的访问方式是什么?
                          getXxx() 和 setXxx()方法
                          问:get() 和 set()必须成对出现吗?
                                不一定,看需求,如果只赋值就写set(),如果只获取值就写get().
                                因为我们现在还不是特别熟练,所以不管用不用,get()和set()都写上。
                          //getName() setName()
        好处:
                复用性。
                安全性。
        原则:
                把不需要对外提供的内容给封装起来。
                大白话解释:把所有的成员变量都封装起来。
       
        this关键字:
                概述:代表本类当前对象的引用。
                          大白话理解:谁调用,this就代表谁。
                应用:
                        就是用来解决: 局部变量隐藏成员变量值的问题。

        写类的格式:
        class 类名 {
                //成员变量        全部私有

                //构造方法

                //get()和set()方法

                //成员方法
        }


中午作业:
        上午写的类再练习下,
                定义出类,然后在测试类中红创建对象调用。


        学生类:Student
                属性:姓名name,年龄age,性别gender
                行为:学习study,睡觉sleep

        手机类:Phone
           属性:品牌(brand) ,价格(price)
           行为:打电话(call),发信息(sendMessage),玩游戏(playGame)

    汽车类(Car)
          属性:车的颜色(color),车的轮胎个数(num)
          行为:车会跑(run)
               
        创建一个对象的内存图,尝试自己画一下。



作者: 慕云风清    时间: 2015-12-7 23:58
应该挺好的
作者: Mr.zhao    时间: 2015-12-8 00:08
我想问问面试啥的会有很多概念题不




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