Java基础(11)之面向对象基础

目录

在这里插入图片描述

1. 类和对象

什么是类,什么是对象

1.1 什么是对象

在这里插入图片描述

1.2 什么是面向对象

什么是面向对象

1.3 什么是类

在这里插入图片描述

1.4 什么是对象的属性

在这里插入图片描述

1.5 什么是对象的行为

行为就是对象能够干什么
在这里插入图片描述

1.6 类和对象的关系

在这里插入图片描述

1.7 类的定义

在这里插入图片描述

1.7.1 类的定义步骤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码示例:
在这里插入图片描述
在这里插入图片描述

1.8 对象的使用

在这里插入图片描述
代码示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

扫描二维码关注公众号,回复: 9438470 查看本文章

2. 对象内存图

2.1 对象内存图(单个对象)

这是一个测试类
在这里插入图片描述
先从main方法开始,main方法被加载到栈内存
在这里插入图片描述
创建对象,它会被加载到栈内存中
在这里插入图片描述
new Student(),在堆内存中new一片空间放入成员遍历,并赋值默认值。
方法没有调用,所以不会加载。
在这里插入图片描述
s指向堆内存中new出来的地址,这样就可以使用堆内存中的数据了。
在这里插入图片描述
输出s,因为s指向001,所以输出001.
在这里插入图片描述
s指向001,name指向001中的name,所以输出null
在这里插入图片描述
s指向001,age指向001中的age,所以输出0
在这里插入图片描述
最后拼接输出,null,0
在这里插入图片描述
s.name = “张曼玉”; 通过s(001)找到name,给他赋值"张曼玉"
在这里插入图片描述
和上面一样age的值修改为28
在这里插入图片描述
再次输出的时候就成了,张曼玉,28
在这里插入图片描述
s.study(); 首先找都Studen对象中的study方法,将它加载到栈内存中,而s(001)就是它的调用者。
在这里插入图片描述
接下来进入study方法中,输出"好好学习"
当这个方法执行完毕就会从栈内存中消失
在这里插入图片描述
接下来的doHoework();方法和study()方法一样。

2.2 对象内存图(多个对象)

因为new 是在堆内存中开辟一块空间,所以,s1和s2是不一样的,互不影响。
在这里插入图片描述

2.3 对象内存图(多个对象指向相同)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
把s1(001)赋值给s2,这样s1和s2就都指向了堆内存中的001
在这里插入图片描述
因为s2指向的堆内存地址也是001,所以把name修改为"张曼玉"
在这里插入图片描述
同上age的值变为28
在这里插入图片描述
因为s1和s2的堆内存地址值是一样的,所以他们俩输出的结果是一样的。
在这里插入图片描述
s1输出的是张曼玉,28
在这里插入图片描述
s2输出的也是张曼玉,28
在这里插入图片描述

3. 成员变量和局部变量

3.1 什么是成员变量和局部变量

在这里插入图片描述

3.2 成员变量和局部变量的区别

在这里插入图片描述

4. 封装

4.1 private关键字

在这里插入图片描述

4.2 private关键字的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 this关键字

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4 this内存原理

在这里插入图片描述
在这里插入图片描述
s1调取setName方法,setName()进入栈内存
在这里插入图片描述
形参name是传递过去的"林青霞"
在这里插入图片描述
调用者是s1(001)
在这里插入图片描述
setName()方法中的this就是s1(001)
在这里插入图片描述
this就是调用者s1(001),name是001地址中的name,name是参数"林青霞"赋给001中的name
在这里插入图片描述
s2在堆内存空间中再开辟一块空间,和s1互不干扰。
在这里插入图片描述
总结:调用者是谁this就代表了谁

4.5 封装

在这里插入图片描述

5. 构造方法

5.1 构造方法概述

在这里插入图片描述

5.1 构造方法的注意事项

在这里插入图片描述

5.3 标准类制作

在这里插入图片描述

发布了50 篇原创文章 · 获赞 13 · 访问量 1856

猜你喜欢

转载自blog.csdn.net/qq_43581078/article/details/104302860
今日推荐