类和对象
类就像一个汽车图纸,他是一个抽象的,概念上的定义,而对象就是根据汽车图纸真正造成出来的汽车。
对象是类的实例,类的一个产物。
一。对象存在两个部分:属性和行为
例如:汽车的设计包含两部分:
属性:颜色,品牌,价格,长度,宽度。
行为:行驶,刹车,加速。
二.把汽车图纸映射到java类里面,也是有两部分构成:
成员变量(属性):定义在类下面方法之外的变量。
成员方法(行为):去掉static关键字,就是一个成员方法。
什么是面向对象?
面向对象:
一.将功能封装进对象,强调具备了功能的对象。
JAVA里面,有对象用对象,没有对象,那么就创造对象,用对象,之后还要维护各种对象之间的关系。
二.类(class)和对象(object)是面向对象方法的核心概念。类是对一类事物描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体,因而也称实例(instance)。
三.什么是面向过程?
c语言:看中的是过程的开发
在开发一个程序的时候,看中的是中间的过程,每一个过程步骤都去要自己去做。
四.什么是面向对象?
java; c#; js..... 看中是类的设计
当开发一个程序的时候,不看重具体的过程,看中是谁能帮我去完成这件事件,找人(对象)帮我去做
前期去设计类的时候比较复杂,但是后期的复用性扩展性比较好。
五.面向过程和面向对象的优缺点:
1.面向过程:
优点:面向过程的性能比面向对象高,因为面向对象在实例化时,开销比较大;
缺点:维护性、扩展性没有面向对象好;
2.面向对象:
维护性、扩展性好;
缺点:性能低,开销大;
六.例子:
//人把大象装进冰箱
面向过程:1)打开冰箱 2)把大象装到冰箱 3)关闭冰箱门
面向对象:
人{
打开(冰箱){冰箱.打开();}
操作(大象){大象.进入冰箱的方法();}
关闭(冰箱){冰箱.关闭()}
}
冰箱类{
打开();
关闭();
}
大象类{
进入冰箱的方法();
}
面对对象的三大特征:
1.封装;
2.继承;
3.多态;
一.封装
将代码和其操作的数据捆绑在一起,防止外部对数据和代码的干扰。数据和代码以封装的形式链接起来就构成了一个对象。
隐藏内部功能的具体实现,只保留和外部交流数据的接口。就好比电视机,用一个外壳把内部零部件及控制电路封装起来,只提供按钮或者遥控器接口供人使用。
二.继承
一个对象获得另一个对象的属性。通常一个对象可以从它的父类继承所有的通用属性。继承最大的好处是实现代码的高效重用,也更加形象的描述现实世界中对象的关系。
三.多态
即同一个动作作用不同的对象产生不同的具体行为。
成员变量和局部变量的相同点和不同点:
一.相同点:
1.遵循变量声明的格式:
数据类型 变量名 = 初始化值;
2.都有作用域
二.不同点
1.声明(定义)的位置不同:
成员变量:声明在类里,方法外。
局部变量:声明在方法内,方法的形参部分,代码块内。
2.作用域不同:
成员变量作用类内部。
局部变量作用在方法之内。
3.默认值不同:
成员变量默认值。
局部变量没有默认值。
4.修饰符:
成员变量的修饰符有四个:public private protected 缺省。
局部变量没有修饰符,与所在的方法修饰符相同。
5.内存中的位置不同:
成员变量保存在堆里面。
局部变量保存在栈里面。
变量的分类:
1)按照数据类型的不同:基本数据类型(8种) & 引用数据类型。
2)按照声明的位置的不同:成员变量 & 局部变量。
怎么调用属性和行为?
一.怎么去创建一个对象呢?
- 类名 对象名=new 类名();
二.怎么去调用属性和行为呢?
- 对象名.属性名。
- 如果属性没有赋值,将会有一个默认值,因为他在堆里面。
- 怎么使用方法:
- 对象名.方法名;
参数传递
基本类型传值,对象类型传地址
一.按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。
二.按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本。因此,如果函数修改了该参数,调用代码中的原始值也随之改变。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。