根据作业内容,详细地总结梳理了面向对象的一些概念。
知识结构清晰+足够的代码量=学好一门编程语言
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 静态方法强烈建议用类名调用。
|
|