面向对象概念:
- 创建一个类,将某一类型的方法都放在这个类中(封装)
- 面向过程与面向对象:
面向过程:注重于过程,注重一步一步的求解,去实现(面对具体的每一个功能函数,凡事亲力亲为)
面向对象:将具体功能进行封装,注重于找到具体的类,创建出对象,来调用相对应对象的具体功能
面向对象例子:
做饭->
- 买菜
- 洗菜
- 烧水
- 切菜
- 煮菜
- 装盘
面向对象是将做饭这整一个过程封装起来,组装成一个做饭的类
当主函数中要使用“煮菜”这一方法时:
先找到做饭类,再在做饭这个类中寻找所需要的方法,
调用做饭函数,并进行相应的功能实现
面向对象和面向过程的差异:
- 面向对象更符合人们思考习惯的思想
- 面向过程中更多的体现的是执行者,面向对象更多的体现的是指挥者。
- 面向对象将问题简单化
- 面向过程是基本的思想,面向对象是面向过程的一种优化方式
对象在需求中的使用:
依据前面的做饭的例子我们进行延伸
【做饭】
需求:做一顿能吃的饭
对象:菜,人
分六步:
- 买菜
- 洗菜
- 烧水
- 切菜
- 煮菜
- 装盘
运用面向对象,该过程可分为两个对象:
菜
{
+动作
}
人
{
+动作
}
注意:
- Java中使用具体的事物,要通过new关键词创建这个事物
new 类();
//按照类所描述的内容创建一个具体的对象出来- 进行物体行为描述时,将其放在类中,需要调用时,进行引用
- 对象与类的关系:对象是类所描述出来的具体事物
定义一个类:
- 定义其特征和行为:
特征:变量
行为:函数
class dog{
//成员变量
姓名 String name;
品种 String sort;
年龄 int age;
//成员函数(非static函数)
叫 public void wang(){…};
吃 public void eating(){…};
}
-
定义一维数组,二维坐标
int[ ] a=new int[1];
int[ ] [ ] a=new int[2][2]; -
在主函数中引用该类中的成员函数
类名 . 成员函数名字();
对象创建流程:
类描述
属性 成员变量
行为 成员函数
- 主函数进栈
- 执行new dog() 在堆内存中开辟一个空间,分配地址(随机)
- 在对象空间中创建成员变量的空间 再对成员变量进行默认初始化(成员函数并不在对象空间里)
- 在函数栈中创建局部变量 存放的是该对象在堆内存中地址
private私有关键字
- 前提:成员变量一直暴露在代码中,任何人都可以访问并且修改他的值,导致数据的安全性不高,此时并不一定需要全部向外界访问。
- 概念:将成员变量私有化—> private (不需要外界进行访问)
但是,如果只是不想让外界修改值,而外界可以继续进行访问和查看
引出访问器的概念:
getter —> 成员变量访问器
setter —> 成员变量修改器
返回类型 getter(){
return 成员变量;
}
返回类型 setter(){
this.成员变量=成员变量
}
this 关键字
- 前面在使用setter()成员变量修改器时,使用到了this 关键字,其实将其变量的名字在函数中修改也是可以的,但是在这里,我们为了方便理解
- this :表示当前对象的引用
成员变量的个数和对象的个数有关
成员函数的个数和对象的个数无关 始终一个
成员变量初始化
对象在堆中创建其成员变量有默认初始化
分为三类:
默认初始化—>没有传参数,函数中什么都没有,默认值0或null
显示初始化—>给类定义一个初始值,每个定义的初始值都相同
针对性初始化—>每个人有每个人的值,大家都不一样