面向对象
面向过程 完成一件事情 每一步都自己亲历亲为 注重的是过程
面向对象 关注的是具备功能的对象 完成一件事情是去调用对象的功能
java中面向对象体现在 将一个功能封装到类中 ,当想使用功能时,不去考虑如何去完成这个功能
而是考虑哪个类具备这个功能 比如 想生成随机数 并没有自己写算法生成随机数 而是考虑到java中
特点
1.更符合人们思考习惯的思想
2.将复杂的问题简单化
3.从执行者变为了指挥者
三大特征
封装
隐藏实现细节 提供公共的访问方式
继承
多态
类:
对现实事物的抽象描述 现实事物都具备属性和功能 用类的成员变量来描述属性 用来的成员方法来描述功能
对象:
根据类的描述 创建出来的具体的实例
类的定义格式(标准格式)
public class 类名{
private 数据类型 变量名;
...
public 类名(){}
public 类名(满参){}
get/set方法
}
private:访问权限修饰符 私有化的意思 可以修饰成员变量 和成员方法 和构造方法
被private修饰的成员 只能在本类中使用 外界无法直接访问
this:一般在方法内使用,this代表当前对象的引用 谁调用这个方法 谁就是当前对象
this可以帮助我们区分成员变量 和局部变量
成员变量和局部变量的区别
1.定义位置不同
成员变量:类中方法外
局部变量:方法内
2.作用域不同
成员变量:整个类中生效
局部变量:当前方法或者代码块中生效
3.默认值
成员变量有默认值
局部变量没有默认值 不赋值不能使用
4.内存中的位置不同
成员变量:随着对象 进入到堆内存
局部变量:随着方法进入到栈内存
5.生命周期不同
成员变量:随着对象的创建而创建 随着对象的回收而销毁
局部变量:随着方法的进栈而创建 随着方法的弹栈而销毁
同作用域下
成员变量和成员变量 不能同名
局部变量和局部变量 不能同名
成员变量可以和局部变量同名
变量的就近访问原则
使用一个变量时 会在局部范围内找 有没有这个变量 如果有 直接使用
如果没有则到类的成员位置去找 有没有这个变量 如果有 直接使用 如果没有 直接报错
局部>成员 如想访问成员变量,须加this来区分,如下图
思维导图