黑马程序员技术交流社区
标题:
[入学交流] [哈尔滨校区]面向对象问题总汇(上)
[打印本页]
作者:
15846574191
时间:
2015-12-7 23:24
标题:
[入学交流] [哈尔滨校区]面向对象问题总汇(上)
1,什么是面向对象?
1、面向对象是基于面向过程,面向对象强调的是对象,面向过程强调的是过程(函数)。
2、聊到面向对象,不得不提的就是它的三个思想特点:
A:更符合人们的思考习惯。
B:把复杂的事情变得简单化。
C:把程序员从执行者变成了指挥者。
3、举例:
摊煎饼,买电脑(最好是能结合当时的场景来说)
4、万物皆对象。
2,面向对象的特征?
封装,继承,多态(顺序不能变)
3,局部变量和成员变量的区别:
1、在类中的定义位置不同。
局部变量:在方法中或者方法形参上。
成员变量:在类中,方法外。
2、在内存中的存储位置不同。
局部变量:和方法相关。随着方法的调用而存在,随着方法的调用完毕而消失
成员变量:和对象相关。随着对象的创建而存在,随着对象的消失而变为垃圾被回收
3、生命周期不同。
局部变量:和方法相关。
成员变量:和对象相关。
4、初始化值不同。
局部变量:没有默认值,必须先定义,在赋值,然后才能使用。
成员变量:有默认值。
整型:0
浮点型:0.0
字符:'\u0000'
布尔:false
引用类型:null
4,匿名对象是什么?应用场景是什么?
匿名对象是没有名字的对象
可当作实际参数传递或者对方法一次调用
5,封装是什么?用什么关键字?好处与弊端
封装是隐藏实现细节,对外提供公共的访问方式
通过private修饰
好处:
1隐藏实现细节,提供公共的访问方式
2提高了代码的复用性
3提高安全性。
6,封装指的就是private修饰,这句话对吗?为什么?
不对,因为private仅仅是封装的一种体现,我们学过的类,函数都是封装的体现。
7,公共的访问方式是什么?
getXxx() 和 setXxx()方法
8,get() 和 set()必须成对出现吗?
不一定,看需求,如果只赋值就写set(),如果只获取值就写get().
因为我们现在还不是特别熟练,所以不管用不用,get()和set()都写上。
9,this关键字是什么?this关键字的应用场景?
this代表当前对象的引用
应用于区分局部变量和成员变量重名的时候
10,构造方法的作用是什么?构造方法的特点是什么?构造方法的注意事项是什么?构造方法中可不可以写return语句呢?
作用:给对象的属性进行初始化
特点:1方法名与类名一致
2没有明确返回值类型,连void都没有
3没有返回值,但可以有return
注意事项:1如果我们没有给构造方法,系统会默认给一个无参构造
2只要我们给了任何构造方法,系统就不再给无参构造
3构造方法不能通过对象.的形式调用
11,给成员变量赋值有几种方式?
两种,构造方法和set,前者主要用来创建对象的,赋值只是一个捎带动作
后者只能用来赋值
12,一个类的成员变量初始化过程 Student s = new Student();
系统先给默认值,再执行显示初始化(如果有),构造方法最后对成员变量初始化
13,static关键字是什么?有什么特点?什么时候用呢?有什么注意事项?
static是静态修饰符
特点:1随着类的加载而加载
2优先于对象存在
3被该类的所有对象共享
4可以通过类名.调用也可以通过对象.调用
如果某个成员变量是被所有对象共享的,那么他就应该被static修饰,总结共性用静态,特性用非静态
注意事项:
1,静态方法中是没有this关键字的。
2,静态方法只能(直接)访问静态成员变量和静态成员方法。
3,静态方法如果想使用非静态的内容,必须先创建对象,然后才能使用。
14,静态变量和成员变量的区别:
1、所属不同。
静态变量:所属的是类
成员变量:所属的是对象,也叫实例变量
2、内存存储位置不同。
静态变量:静态区
成员变量:堆内存
3、内存中出现的时机不同
静态变量:随着类的加载而加载
成员变量:随着对象的创建而存在,对象的消失而消失
4、调用不同。
静态变量:能用类名调用,也能用对象名调用
成员变量:只能通过对象名调用
15,代码块是什么?代码块的分类和各自特点?
代码块是由{}括起来的内容
分类:
局部代码块:
定义在局部位置,作用是让变量尽可能早的从内存中消失,节约内存,提高效率。
构造代码块:
定义在成员位置。
作用:里边存储的是所有构造方法的共性内容,因为它是优先于构造方法执行的,从而来提高代码的复用性和编写效率。
静态代码块:
被static修饰的代码块。
作用:一般是用来加载驱动的,因为它是随着类的加载而执行。
特点:静态代码块只执行一次(类文件只加载一次的情况下)。
同步代码块:
被synchronized修饰的代码块。
16,子父类中,都有静态代码块,构造代码块,构造方法,那么他们六者之间的执行顺序是:
第一次创建子类对象:父类静态代码块--子类静态代码块--父类构造代码块--父类构造方法----子类构造代码快--子类构造方法
第二次创建子类对象:父类构造代码块--父类构造方法--子类构造代码块--子类构造方法
17,继承概述以及好处与弊端
继承就是通过extends关键字让类与类之间产生 子父类关系,这种现象就叫继承
继承的好处
1复用性。
2维护性。
3让类与类之间产生关系,是多态的前提。
弊端:耦合性太强了
18Java中继承的特点
类与类之间的继承:只能单继承不能多继承,可以多层继承
接口与接口:可以单继承也可以多继承
19,继承的注意事项:
A:子类只能继承父类的所有非私有成员(成员变量和成员方法)。
B:子类不能继承父类的构造方法,但是可以通过super关键字去访问父类的构造方法。
C:不用为了使用部分功能而去使用继承。
D: 所有的类都直接或间接继承自Object类,Object类是所有类的父类。Object类中只有一个无参构造。
20,什么时候使用继承?
只有当类与类之间满足"is a"的关系的时候,就可以考虑使用继承。
A is a B : A是子类,B是父类
B is a A : A是父类,B是子类
21,继承中的成员变量访问特点
在子类方法中访问一个变量,使用变量遵循一个“就近原则”。局部位置有就使用,没有就去本类的成员位置找,有就使用;没有就去父类的成员位置找,有就使用,没有就报错
22,this和super的区别:
this:代表本类当前对象的引用。
super:代表当前对象父类的引用。
A:调用成员变量与方法:
this.成员变量: 即可以调用本类成员变量与方法,也可以调用父类成员变量与方法(本类没有)
super.成员变量:只能调用父类的成员变量
B:调用构造方法:
this( 参数 ): 调用本类的其他构造
super( 参数 ): 调用的父类的其他构造
23,假如父类没有无参构造方法,子类应该怎么办?
第一种方式:通过 this(参数) 的形式调用本类的其他构造
第二种方式:通过 super(参数) 的形式调用父类的带参构造
24,方法重写和方法重载的区别?方法重载能改变返回值类型吗?
Overload 同一个类中,出现方法名相同,参数列表不同(个数,对应的类型)的两个或两个以上的方法时称为方法 重载,方法重载与返回值的数据类型无关。
Override 子类出现和父类一模一样的方法时,称为方法重写,返回值类型也必须完全一样(或者有子父类关系)
25,什么时候使用方法重写?重写的注意事项
当子类需要使用父类的功能,并且功能主体又有自己特有功能的时候,就可以考虑使用方法重写
注意事项:
1、父类的私有方法不能被子类重写。
2、子类重写的时候,方法的访问权限不能低于父类方法的访问权限。
权限修饰符:
(从小到大) private --> 默认 --> protected --> public
3、父类的静态方法不能被子类的非静态重写。
静态只能覆盖静态(严格来讲,算不上重写)。
作者:
Hi.。
时间:
2015-12-7 23:35
收藏。。
作者:
thriver2010
时间:
2015-12-7 23:39
收藏,太好了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2