面试对象基础(上)
一、初步认识
思考:把大象装冰箱一共分几步?
①打开冰箱
②把大象装进去(存储大象)
③关闭冰箱
如何使用面向对象思想思考上述问题呢?
人{
拉(冰箱){
冰箱.打开()
}
指挥(动物){
动物.进入()
}
推(冰箱){
冰箱.关闭()
}
}
冰箱{
打开(){}
存储(){}
关闭(){}
}
大象{
进入(){}
}
猴{
进入(){}
}
狮子{
进入(){}
}
面向对象和面向过程:
面向过程:强调的是功能行为
面向对象:将功能行为封装进对象,强调的是具备了功能行为的对象
面向对象更加注重前期的设计
①就是对类的设计
②设计类就是设计类的成员:属性 & 方法
class Animal{
//属性
String name;
char gender;
int age;
//方法-行为
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
}
若需要具体到某一个事物,通过 new 关键字创建对象
Animal a1 = new Animal(); //
a1.name = "大象";
a1.gender = '男';
a1.age = 2;
a1.eat();
a1.sleep();
System.out.println(a1.name + "," + a1.age);
类和对象:
类:对现实生活中一类事物的描述,抽象的
对象:是一个实实在在的个体
二、属性(也叫成员变量,也叫实例变量)
成员变量与局部变量的区别?
①作用域不同
②内存中的位置不同
③成员变量有默认值,局部变量没有默认值(局部变量使用前必须赋初始值)
成员变量的默认值:
1、基本数据类型:
byte short int —> 0
long —> 0L
float —> 0.0F
double —> 0.0D
char —> ‘\u0000’
boolean —> false
2、引用数据类型: —> null
|– 类(class)
|– 接口(interface)
|– 数组([])
为属性赋初始化值的方式
①使用默认值
②直接显示赋值
三、参数的值传递
基本数据类型: 将基本数据类型作为参数,传递给方法,方法运行结束后,原值不会发生改变
引用数据类型: 将引用数据类型作为参数,传递给方法,方法运行结束后,原值会发生改变
内存管理:
分配: JVM自动为其分配内存空间
释放:JVM通过垃圾回收机制自动的释放内存空间
垃圾回收机制: 将内存中的垃圾对象释放
垃圾对象:不再被任何引用指向的对象
Person p = new Person();
p = null;
System.gc(); //通知垃圾回收机制释放内存,但并不能保证立即释放,加快释放。
四、方法的声明和使用
1、方法的格式
修饰符 返回值类型 方法名(参数列表){
//功能语句
return 返回值;
}
返回值类型:说明方法运行后有结果,那个结果的数据类型。
参数列表:就是局部变量,可以有0个或多个,每个参数之间以 “,” 分隔
return : 用于结束当前方法
返回值:方法运行结束后,返回具体结果的值
2、方法的注意
①“返回值类型”与“返回值”的数据类型需要保持一致
②调用方法通过方法名和参数列表,注意方法名和参数列表(参数的个数、参数的类型)必须一致
③若声明了“返回值类型”说明该方法运行后有结果,若调用者需要用到该结果可以声明同类型变量接收。
④若方法运行结束后,不需要返回任何结果给调用者时,方法“返回值类型”处声明为 void (void : 表示没有返回值)
⑤方法中只能调用方法,不能声明其他方法
3、声明方法的两点明确
①方法是否需要返回结果给调用者
明确是否需要返回值类型,返回值类型是什么
②方法是否有未知的数据参与运算
明确是否需要参数列表,需要几个
4、方法重载(Overload)
前提:在同一个类中
①方法名相同
②参数列表不同(参数的个数、参数的类型)
注意:与返回值类型无关