面向对象编程思想
思想 : 想法,思维方式 -> 思想决定行为
编程思想 : 编程时的一种思维方式 -> 决定了如何写代码
面向过程 : 凡事必躬亲
面向对象 : 自己的事情别人做, 懒人思维
面向函数 : 基于面向对象的,面向对象的升级版
面向切面 :
面向对象编程思想: 自己的事情别人做, 懒人思维
面向对象思想是基于面向过程编程思想的升级;
洗衣服:
面向过程 : 泡一泡 -> 搓一搓 -> 扭一扭 -> 拧一拧 -> 晾一晾
面向对象 : 买一台洗衣机 , 衣服搞里头 , 启动洗衣机 -> 对象 : 洗衣机
买电脑:
面向过程 : 打车去广埠屯 -> 选配置 -> 和老板讨价还价 -> 打包带回宿舍
面向对象 : 打开手机APP -> 选配置 -> 下单 -> 对象: 手机APP
面向对象思想的核心特点:
1. 更符合平时的思维习惯
2. 把复杂的问题简单化
3. 把我们从执行者变成指挥者
服务员点单
万物皆对象 -> Thinking in Java(Java编程思想)
面试中面向对象问题回答:
我理解的面向对象思维是更符合平时思维习惯的一种思维方式,它可以把复杂的问题简单化,可以把我们从执行者变成指挥者,在Thinking in Java这本书中对面向对象思维描述用到了 万物皆对象;面试官您面试的整个过程涉及到了很多面向对象思维的应用,面试官您面试肯定是因为公司项目有了新的或者更多的需求,以您的实力完全可以一个人完成,但是您有更重要的工作需要去主持,所以老板就使用了您面试的功能来招聘一些具备开发功能的人例如我帮助您完成需求;面向对象思维在工作场景中的应用,应用时遇到的问题,如何解决的....
类和对象关系
类 : 类别,种类,类型 --> 一类事物 -> class 手机
对象 : 此类事物的实例 --> 此类事物中具体的某一个 我的手机 -> 具体使用的是对象
现有类还是现有对象?? 肯定是先有类再有对象
类相当于对象的模板
如何定义事物描述类
格式:
public class 类名{
成员变量;
成员方法;
}
成员变量: 定义在类中方法外的变量 -> 每个对象都拥有自己的一份属性
String name;
成员方法: 定义在类中方法外的方法(所有的方法都是成员方法) -> 对象们的行为共享的
public 返回值类型 方法名(形参列表){
}
如何使用事物描述类
在使用的地方创建对象!!
类: 是事物的抽象 对象: 此类事物的具体化(实例)
创建对象的格式:
类名 对象名 = new 类名();
对象调属性/对象调方法 --> 调 : .
对象调用方法的执行流程图
成员变量和局部变量的区别
成员变量和局部变量的区别
1. 在类中的位置不一样
成员变量 : 类中方法外
局部变量 : 方法内or方法的形参
2. 作用域不一样
成员变量 : 整个类中都有效
局部变量 : 只在其定义的方法内有效
3. 初始化值不一样:
成员变量 : 有默认值
整数 0 浮点数 0.0 字符 '\u0000' 布尔 false 所有的引用数据类型 null
局部变量 : 没有默认值
4. 生命周期不一样 成员变量活的比局部变量久
成员变量 : 随着对象的创建而产生,随着对象的回收而死亡
局部变量 : 随着方法的调用而产生,随着方法的执行完毕而死亡
5. 在内存中的位置不同
成员变量 : 堆中
局部变量 : 栈中
因为在类中的位置不同,导致作用域不同和导致在内存中的位置不同;
因为在内存中的位置不同,导致初始化值不同和生命周期不同;
private关键字
private : 访问权限修饰符 -> 私有的
作用位置:
修饰 成员变量,成员方法
private 关键字的访问权限是 : 只能在本类中访问
public 最大的权限修饰符
变量访问的就近原则
知识前提:
1. 成员变量可以和局部变量同名 -> 局部和成员变量JVM会自动分辨
2. 代码访问的远近关系 :
局部位置 < 本类成员位置 < 本类父类的成员位置
this
this 的作用:
打破变量访问的就近原则,强制去访问 本类成员位置上的 变量/方法
this.变量名 : 强制访问本类成员位置上的变量
this.方法名(实际参数) : 强制访问本类成员位置上的方法
-----------------------------------------------------------------
this : 本类对象的引用
哪个对象调用含有this关键字的方法.this关键字就代表那个对象
this 是谁 : 照镜子
对象调含有this关键字方法 -> 对象照镜子 镜子里面出现的哪个人就是this关键字现在代指的对象
super : 本类父类对象的引用
构造方法
构造方法 : 构建创造对象的方法叫构造方法 constructor
方法 : 方法就是方法,封装了特定功能的代码块
构造 : 构建 创造
构造方法的格式:
public 类名(形式参数列表){
方法体;
}
构造方法的注意事项
构造方法的注意事项:
1. 构造方法没有返回值类型板块,构造方法调用完毕必然生成的是本类的对象
2. 构造方法的方法名必须和类名一致 (大小写也要一致!)
3. new 的本质是在创建对象,其实也是在调用构造方法
4. 如果一个类中没有写任何构造方法,JVM默认赠送一个无参构造(没有形参的构造方法)
5. 如果在一个类中写了任意一个构造方法,默认赠送的无参构造就不送了
6. 构造方法也可以构成方法的重载
7. 没有参数的构造称 无参构造,有参数的构造称 带参构造
8. 有参构造可以在创建对象的同时给属性赋值
定义事物描述类
1. 私有所有的属性
2. 自动生成无参构造
3. 自动生成全参构造
4. 自动生成 getter and setter 方法
面向对象的三大特性
面向对象的三大特性 : 封装,继承,多态
今天学习的内容是 面向对象特性之封装
循环 : 把重复的代码封装起来 -> 提高代码的复用性
方法 : 把重复的功能封装起来 -> 提高代码的复用性,方法实现了数据传递
private : 把属性私有保护起来 -> 提高了代码的安全性
描述事物(定义事物描述类) : 把事物的属性和行为进行封装到类 -> 提高代码的多样性
|