面向对象
-
面向过程,当需要实现一个功能时,每一步都需要亲力亲为
面向对象,当实现一个功能时,不需要关心步骤,而是找具有该功能的来实现 -
面向对象的语言中包含了三大基本特性,封装性,继承性和多态性
-
类和对象的关系
类是一组相关属性和行为的集合是抽象的。
属性是物体的状态信息,行为是一个物体能做什么? -
类的定义
成员变量:定义在类当中方法外
成员方法:与方法格式一样,但要去掉static -
对象的创建及使用
①导包:指出需要使用的类在哪个位置,
格式:import 包名称.类名称
对于和当前类属于同一种位置的情写,可以省略到包语句不谢
②创建:格式
类名称 对象名=new 类名称();
③使用
使用成员变量:对象名.成员变量名
使用成员方法:对象名.成员方法名()
注:如果成员变量没有进行赋值,那么将会有一个默认值,规则和数组一样。 -
一个对象的内存图
进栈的时候也叫压栈
运行完就出来—弹栈,出栈
两个对象使用同一个方法的内存图
两个指引用指向同一个对象的类的内存图 -
使用对象类型作为方法参数
当一个对象作为参数传递到方法中时,实际上传递进去的是对象地址值 -
使用对象类型作为方法的返回值
返回的其实也是对象的地址值 -
成员变量和局部变量的区别
①定义的位置
②作用的范围
③默认值不一样
局部变量,无默认值,想要使用局部变量,就必须先赋值(参数在方法中调用的时候,必然会被赋值)
(一下了解)
④内存位置不一样局部变量是在栈成员变量在堆
⑤生命周期不一样
局部变量,遂方法近战而诞生,隋方法出战而消失
成员变量随对象的创建而诞生,随着对象被垃圾回收而消失 -
面向对象的三大特征之封装
在JAVA当中的体现:方法就是一种封装
关键字private也是一种封装
封装就是将一些细节信息隐藏起来,对于外界不可见 -
private
①可以将需要保护的成员变量进行修饰
格式:private 成员变量
②一旦使用private修饰,那么本类当中仍然可以随意访问,但超出本类范围之外便不可随意访问
③间接访问:给成员变量定义getter setter方法
setter:专门用于向成员变量设置数据
getter:用于获取数据
命名规则:setxxx getXxx
setter设置不能有返回值,参数类型和成员变量相对应(方法类型写void)
getter不能有参数,返回值类型和成员变量相对应 -
this关键字的作用
当方法的局部变量与成员变量重名时,就近原则优先使用局部变量,如需访问本类当中的成员变量需要:this.成员变量名
“通过谁调用,谁就是this” -
构造方法
是专门用于创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法
格式:public 类名称(参数类型 参赛名称{
方法体
}
注:①构造方法的名称必须和所在类名称完全一样
②构造方法不要写返回值类型,连void也不写
③不能return一个具体的返回值
④如果没有编写任何构造方法,那么编译器将会默认赠送一个构造方法,这个构造方法没有参数,方法体,什么也不做
⑤一旦编写了,至少一个构造方法,那么编译器将不再赠送
⑥构造方法也是可以重载的
- 定义一个标准的类
他要有几以下几个部分
①所有成员变量必须使用private
②设置get set
③编写无参数构造方法
④编写全参数构造方法
自动生成getter settet 全参、无参构造方法:Code—Generate