黑马程序员技术交流社区

标题: 初学面向对象,对的一些概念归纳 [打印本页]

作者: 官沛    时间: 2015-7-12 20:07
标题: 初学面向对象,对的一些概念归纳
根据作业内容,详细地总结梳理了面向对象的一些概念。
知识结构清晰+足够的代码量=学好一门编程语言

1:面向对象是什么?并举例说明?(常作为面试题,要注意)
    答:面向对象思想是相对于面向过程的思想来说的。面向过程关注过程本身,关注操作的细节;而面向对象强调的是对象,关注具备一定功能的对象。用面向对象的思想处理问题,首先想的是找一个可以胜任处理此问题的角色——对象,如果没有,那就创建一个合适的对象去处理。
    我觉得培训教育机构就是很好的例子,比如黑马如果目标是推动中国it技术的发展,如果以面向过程为思路的话,那就是让黑马所有的老师自己去处理所有it公司遇到技术问题,而面向对象的思想是:先找对象,就是合格it人才,但发现不够;所以就创建对象,要定义很多功能和方法,让对象能去处理it问题,这其实就是培训教育的过程,毕业后再去各个公司处理问题。
    所以可以看出,面向过程其实是面向对象的基础,而面向对象更符合人们的生活经验,把复杂问题简单化,把事情的执行者变成指挥者。

2:类与对象的关系? (常作为面试题,要注意)
    答:类是java语言的最基本单位,是对象的抽象化描述,是对象的一些属性和功能的集合,是一类事物的共同特征,而不是实体。
        而对象是实实在的个体,是类的具体体现。

3:类有哪些内容组成?
   答:类的组成内容大致上包括三部分:
        a 成员变量,是对属性的描述
        b 成员方法,是对功能的描述
        c 构造函数,是对对象的初始化

   
4:局部变量和成员变量的区别?
   答:区别有如下几点:
        a 定义位置不同:局部变量定义在方法内,或方法的形式参数;而成员变量定义在方法外,类中;
        b 储存位置不同:局部变量在栈内存中,成员变量在堆内存中,
        c 生命周期和作用域不同:局部变量随着函数的调用而出现,随着函数的结束或return而消失成员变量随着对象的定义而产生,随着对象的消失而消失
        d 初始化赋值不同:局部变量在定义后,不会自动初始化赋值,要使用必须先手动赋值成员变量产生后会自动被初始化一个值,整形是0;浮点是0.0;引用类型(String和数组 是null);boolean是false;字符是'\u0000'(0)。

5:构造方法的特点及注意事项?
   答:构造方法的特点:
        a 格式:函数名必须与类名相同  e.g. private Student(){}
                不能由static修饰
        b 作用:用来给对象初始化、给对象成员赋值
        c 不定义返回值类型(没有void)
        d 没有具体返回值
       注意事项:
        a 如果类中没有给出构造方法,系统也会默认给一个无参无内容的构造方法
        b 如果类中给出构造方法,不管有参还是无参,系统将不再提供。所以建议永远手动定义一个无参构造。
        c 可定义多个构造方法,参数列表不同,可以重载

6:this关键字是什么?在什么时候使用?
   答:this关键字代表当前运行类的对象的引用(哪个对象调用,this就代表哪个对象)。
       当局部变量隐藏成员变量值的时候使用。
      注意: a 在构造方法和成员方法中都可以使用
              b 若局部范围内的变量没有隐藏成员变量的问题,this可省略。

7:给成员变量赋值的方式有几种?分别怎么实现?
   答:有四种,分别是:显示赋值;构造代码块赋值;构造方法赋值;构造set方法调用时传值
        a 显示赋值:直接在定义成员变量时赋值
        b 构造代码块赋值:在代码块中对成员变量赋值
        c 构造方法赋值:定义带参的构造方法,创建对象时传值进来赋给成员变量
        d set方法赋值:定义一个成员方法,调用时传值进来

       注意:1 成员变量初始化的执行顺序(Student s = new Student();):
                        在内存加载class文件(内存加载器)》在栈内存中开辟空间s》在堆内存中开辟空间new Student()
                        》方法进方法区,并且成员变量进堆内存 》成员变量默认值:0/null...》a成员变量显示赋值
                        》b构造代码块给成员变量赋值(有的话)》c构造方法给成员变量赋值
                        》对象初始化完毕,将对象在堆内存的地址值赋给栈内存的变量s。
                        》d、set方法赋值
             2 一般工作中不常用构造方法赋值(参数列表可能太长)
             3 构造代码块是用来把成员变量中共同的内容定义在构造代码块中,工作中也不常用。在构造方法执行之前就运行,
               且每次创建对象就运行一次。
             4 set方法不光能赋值,还能修改已有对象的成员变量,而其他办法只能新建一个对象。

8:static关键字是什么?有什么特点?在什么时候使用?
   答:static 是静态修饰符,用来修饰成员变量和成员方法。当很多对象共享某成员变量或成员方法时使用。
特点:a 被static修饰后,不随对象产生,而是在对象定义之前,随着类的加载就产生了
        b 被static修饰的成员被对象共享,如果一个对象修改了,其它对象获取的都是修改后的值
                        (没有被static静态修饰的内容,其实属于对象的特殊描述)
                        (类变量:被static修饰的成员变量
                                实例变量:没有static修饰的成员变量)
        c 被static修饰后的成员,不用通过变量访问,可以用类名直接访问。
        
注意事项:a 静态方法中没有this 因为静态是随着类的加载而加载
                  b 静态方法只能访问静态成员变量成员方法。(非静态方法都可访问)
                  c 静态方法强烈建议用类名调用。





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