面向对象
面向对象:
面向对象是相对面向过程而言
面向对象和面向过程都是一种思想
面向过程 【强调的是功能行为】
面向对象【将功能封装进对象,强调具备了功能的对象】
面向对象是基于面向过程的
面向对象:三个特征:
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
以后开发:其实就是找对象使用,没有对象,就创造一个对象
找对象,建立对象。维护对象的关系
类和对象的关系:
比如:现实生活中的对象:张三 李四
想要描述:提取对象中共性内容。对具体的抽象
描述时:这些对象的共性有:姓名,年龄,性别,学习java功能
类就是:对现实生活中食物的描述
对象:就是这类事物,实实在在存在个体
映射到java中,描述就是class定义的类
具体对象就是对应java在堆内存中用new建立实体
描述事物其实在描述事物属性和行为
属性对应是类中变量,行为对应的是类中的函数(方法)
其实定义类,就是在定义属性和行为,属性和行为共同成为类中的成员(成员变量和成员方法)
成员变量和局部变量
成员变量:
1、 作用于整个类中
2、 成员变量随着对象的建立而建立, 随着对象的消失而消失, 存在于对象所在的堆内存中。
3、 成员变量有默认初始化值。
局部变量:
1、局部变量只定义在局部范围内,作用于函数中,或者语句中如: 函数内, 语句内等, 只在所属的区域有效。
2、 局部变量存在于栈内存中, 作用的范围结束, 变量空间会自动释放。
3、 局部变量没有默认初始化值。
在内存中存在的位置:
成员变量:在堆内存中,因为对象的存在,才在内存中存在
局部变量:存在栈内存中
匿名对象:
匿名对象是对象的简化形式
匿名对象两种使用情况
1.当对对象方法仅进行一次调用的时候 这样写比较简化
如果对一个对象进行多个成员调用,必须给这个对象起个名字【调用属性没有意义】
2.匿名对象可以作为实际参数进行传递
封装
封装(Encapsulation):
是指隐藏对象的属性和实现细节,仅对外提供公共访问的方式
好处:
将变化隔离 便于使用 提高重要性 提高安全性
封装原则:
将不需要对外提供的内容都隐藏起来
把属性都隐藏,提供公共方法对其访问
之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句 if....else...
对访问的数据进行操作,提高代码的健壮性
**封装不是私有 私有仅仅是封装的一种表现形式