面向对象(上)
2020.12.7 复习
学习面向对象内容的三条主线
1.Java类及类的成员
2.面向对象的三大特征
3.其它关键字
面向过程与面向对象
![image.png](https://img-blog.csdnimg.cn/img_convert/b86b2118b3c74f6a3f1e82c5089c2d11.png#align=left&display=inline&height=306&margin=[object Object]&name=image.png&originHeight=422&originWidth=1029&size=138626&status=done&style=none&width=747)
面向对象:Object Oriented Programming
面向过程:Procedure Oriented Programming
经典例子:人把大象放冰箱
![image.png](https://img-blog.csdnimg.cn/img_convert/f7280b6dac55a173d27893d08b2568ce.png#align=left&display=inline&height=381&margin=[object Object]&name=image.png&originHeight=635&originWidth=1081&size=110078&status=done&style=none&width=648)
![image.png](https://img-blog.csdnimg.cn/img_convert/1d152b998f05e6721cc35e9116bc52d2.png#align=left&display=inline&height=323&margin=[object Object]&name=image.png&originHeight=532&originWidth=1072&size=151908&status=done&style=none&width=650)
类与对象
![image.png](https://img-blog.csdnimg.cn/img_convert/af7f10e691aec8a6f6c83cbd311e128e.png#align=left&display=inline&height=285&margin=[object Object]&name=image.png&originHeight=455&originWidth=922&size=76722&status=done&style=none&width=577)
![image.png](https://img-blog.csdnimg.cn/img_convert/4be2a94763cf0b094b2702eae103d5b8.png#align=left&display=inline&height=323&margin=[object Object]&name=image.png&originHeight=552&originWidth=1033&size=233577&status=done&style=none&width=605)
![image.png](https://img-blog.csdnimg.cn/img_convert/74dcae55f2b8acb127b862fc59e7a793.png#align=left&display=inline&height=319&margin=[object Object]&name=image.png&originHeight=548&originWidth=1057&size=194413&status=done&style=none&width=615)
![image.png](https://img-blog.csdnimg.cn/img_convert/69b036a612cecbcdf8b543531430b746.png#align=left&display=inline&height=524&margin=[object Object]&name=image.png&originHeight=651&originWidth=817&size=386382&status=done&style=none&width=658)
对象的创建和使用
第一步:创建类、设计类的成员
第二步:创建类的对象
第三步:调用对象的结构 通过 对象.属性或者 对象.方法
第一步:
![image.png](https://img-blog.csdnimg.cn/img_convert/5f41721c6a03e8309aa0a42dd515f026.png#align=left&display=inline&height=377&margin=[object Object]&name=image.png&originHeight=397&originWidth=623&size=187412&status=done&style=none&width=591)
第二步:
![image.png](https://img-blog.csdnimg.cn/img_convert/07540f4b0884adf27fdb2082cc5f670d.png#align=left&display=inline&height=133&margin=[object Object]&name=image.png&originHeight=141&originWidth=623&size=87315&status=done&style=none&width=586)
第三步:
![image.png](https://img-blog.csdnimg.cn/img_convert/3f9c13f33cbfc56fc3053b85029ffb1e.png#align=left&display=inline&height=292&margin=[object Object]&name=image.png&originHeight=292&originWidth=432&size=124529&status=done&style=none&width=432)
Ps:访问机制了解一下
![image.png](https://img-blog.csdnimg.cn/img_convert/64b76b9d67696a522db8b07a8186c45c.png#align=left&display=inline&height=214&margin=[object Object]&name=image.png&originHeight=344&originWidth=1010&size=79190&status=done&style=none&width=628)
对象创建的内存解析
![image.png](https://img-blog.csdnimg.cn/img_convert/2c7df3d94059077b4b494222eaf150df.png#align=left&display=inline&height=381&margin=[object Object]&name=image.png&originHeight=560&originWidth=1098&size=426486&status=done&style=none&width=747)
深入的就不说了因为当时学的时候没考虑方法区常量池
匿名对象
![image.png](https://img-blog.csdnimg.cn/img_convert/a23539561bd36db1c386466a4a0b9cc6.png#align=left&display=inline&height=267&margin=[object Object]&name=image.png&originHeight=347&originWidth=963&size=76314&status=done&style=none&width=740)
**
类的成员之属性与方法
![image.png](https://img-blog.csdnimg.cn/img_convert/d2a3436d41f5ec98b140cc97d7b961e4.png#align=left&display=inline&height=383&margin=[object Object]&name=image.png&originHeight=633&originWidth=1023&size=145809&status=done&style=none&width=619)
![image.png](https://img-blog.csdnimg.cn/img_convert/65301c2ff8a5f9d94a0db4fb7402b81e.png#align=left&display=inline&height=456&margin=[object Object]&name=image.png&originHeight=574&originWidth=820&size=142237&status=done&style=none&width=651)
![image.png](https://img-blog.csdnimg.cn/img_convert/7d3d2686500d3fb1b4e4b5bd0510fc0f.png#align=left&display=inline&height=307&margin=[object Object]&name=image.png&originHeight=485&originWidth=1046&size=83575&status=done&style=none&width=663)
属性(成员变量) vs 局部变量
* 1.相同点:
* 1.1定义变量的格式: 数据类型 变量名 = 变量值
* 1.2先声明,后使用
* 1.3变量都有对应的作用域(权限)
*
*
* 2.不同点:
* 2.1 在类中声明位置的不同
* 属性: 直接定义在类的一对{}中
* 局部变量:声明在方法内、方法行参、代码块内、构造器形参、构造器内部的变量
*
* 2.2 关于权限修饰符的不同
* 属性:可以在声明属性时,指明其权限,使用权限修饰符。
* 常用的权限修饰符:private、public、缺省、protected
* 局部变量:不可以使用权限修饰符。
*
* 2.3 默认初始化值的情况
* 属性:类的属性,根据其类型,都有默认初始化值。
* 整型(byte、short、int、long):0
* 浮点型(float、double):0.0
* 字符型 (char):0 (或’\u0000’)
* 布尔型(boolean):false
* 引用数据类型(类、数组、接口):null
*
* 局部变量:没有默认初始化值。
* 意味着:我们在调用局部变量之前、一定要显示赋值。
* 特别的:形参在调用时,我们赋值即可。
*
* 2.4 在内存中加载的位置:
* 属性:加载到堆空间中(非static、static放在方法区的)
* 局部变量:加载到栈空间
![image.png](https://img-blog.csdnimg.cn/img_convert/01887e6f687c4aced7f2d2aab0c2bcee.png#align=left&display=inline&height=360&margin=[object Object]&name=image.png&originHeight=551&originWidth=1095&size=117288&status=done&style=none&width=716)
![image.png](https://img-blog.csdnimg.cn/img_convert/a6254bc4e987b79d6e1f114242b08a37.png#align=left&display=inline&height=375&margin=[object Object]&name=image.png&originHeight=568&originWidth=1093&size=129535&status=done&style=none&width=721)
![image.png](https://img-blog.csdnimg.cn/img_convert/8247d560ba88cdc2a90634c76b35e6b6.png#align=left&display=inline&height=395&margin=[object Object]&name=image.png&originHeight=554&originWidth=950&size=142247&status=done&style=none&width=678)
内存解析来一个
![image.png](https://img-blog.csdnimg.cn/img_convert/b569a7fba09c303fe0f7266051d9a92a.png#align=left&display=inline&height=351&margin=[object Object]&name=image.png&originHeight=565&originWidth=1081&size=114635&status=done&style=none&width=671)
方法的重载overload
![image.png](https://img-blog.csdnimg.cn/img_convert/ad461001d67cf9dd47692491f69947c3.png#align=left&display=inline&height=353&margin=[object Object]&name=image.png&originHeight=514&originWidth=985&size=116172&status=done&style=none&width=677)
做个小练习:
![image.png](https://img-blog.csdnimg.cn/img_convert/d222e8a5dfc1eee4383ef6e592d313ae.png#align=left&display=inline&height=406&margin=[object Object]&name=image.png&originHeight=527&originWidth=897&size=86798&status=done&style=none&width=691)
可变形参:
![image.png](https://img-blog.csdnimg.cn/img_convert/c8e323d59f69c71cc9725832da142c21.png#align=left&display=inline&height=242&margin=[object Object]&name=image.png&originHeight=435&originWidth=1077&size=94630&status=done&style=none&width=599)
每日一考与复习
面向对象思想编程内容的三条主线分别是什么
① 类及类的成员:属性、方法、构造器;代码块、内部类
② 面向对象的三大特征:封装、继承、多态
③ 其它关键字:this,super,abstract,interface,static,final,package,import
面向对象的编程思想?
(类、对象;面向对象的三大特征;。。。)
谈谈你对面向对象中类和对象的理解,并指出二者的关系?
类:抽象的、概念上的内容
对象:实实在在存在的一个个体。 New出来了,在内存中实实在在有这么一个空间
对象是由类派生出来的。
_3. _面向对象思想的体现一:类和对象的创建和执行操作有哪三步?
① 创建类
② 类的实例化 (创建类的对象)
③ 调用对象的结构:”对象.属性” “对象.方法”
_
4. 画出如下代码在执行时的内存分配情况
class Car{
String color = "red";
int num = 4;
void show(){
int a = 10; 局部变量都在栈空间中
System.out.println("color="+color+",num="+num);
}
}
class CarTest {
public static void main(String[] args) {
Car c1 = new Car();
Car c2 = new Car();
c1.color = "blue";
c1.show();
c2.show