文章目录
- 面向对象基础
- 一.面向对象介绍
- 二.设计对象并使用
- 三.封装
- 四.This关键字
- 五.构造方法
- 六.标准的Javabean类
- 七.对象内存图
- 八.基本数据类型和引用数据类型
- 九.成员和局部
面向对象基础
一.面向对象介绍
面向:
拿,找
对象:
能干活的东西
面向对象编程:找东西来做对应的事情
重点:
- 学习获取已有对象并使用,例如:Scanner
- 学习如何自己设计对象并使用
二.设计对象并使用
类(设计图):是对象
共同特征的描述
对象:是真实存在的具体东西
所以,在Java中,必须先设计类
,才能获得对象
定义类的注意事项:
-
用来描述一类事务的类,专业叫做
Javabean
类,Javabean类中是不写main
方法的 -
写main方法的类叫做
测试类
,在测试类中创建Javabean类的对象并使用 -
类名首字母建议大写,需要见名知意,驼峰模式
-
一个java文件中可以定义多个class类,且只能有一个类是public修饰,而且public修饰的类名必须成为代码文件名
-
实际开发中,建议一个java文件中只定义一个class类
-
成员变量的完整定义格式:修饰符 数据类型 变量名 = 初始化值; 一般无需指定初始化值,存在默认值
三.封装
面向对象三大特征:
-
封装
-
继承
-
多态
封装的作用:告诉我们如何正确的
设计对象的属性和行为
封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为
举一个例子:人画圆,这里有两个对象,一个是人对象,一个是圆对象
那么请问画圆的这个行为应该是人的还是圆的?
答案是:圆的
因为,半径数据是圆的属性,而画圆需要用到半径,所以,画圆的行为属于圆的
为了避免外界对 对象的属性进行不合理的操做,例如 a.age = -18;需要学习一个关键字:private
private:
-
权限修饰符
-
可以修饰成员(属性和行为)
-
被private修饰的成员只能在本类中才能被访问
针对private修饰的成员变量,如果需要被其他类使用,提供
setXxx(参数)方法,用于给成员变量赋值,用public修饰
getXxx(参数)方法,用于获取成员变量的值,用public修饰
四.This关键字
成员变量:定义在方法的外面,类的里面
局部变量:定义在方法的里面
就近原则:谁离我近,我就用谁
作用:区分成员变量和局部变量
this.变量,代表的就是成员变量
this的内存原理:
五.构造方法
作用:在创建对象的时候给成员变量进行赋值
格式:
特点:
- 方法名和类名相同
- 没有返回值类型,也没有void
- 没有具体的返回值
分类:无参构造和全参构造
执行时机:
- 在创建对象的时候,由虚拟机调用,不能手动调用
- 每创建一次对象,就调用一次构造方法
注意事项:
-
在定义方面:
- 如果没有定义,默认给一个无参构造
- 如果已经定义,以定义的为主
-
构造方法的重载
- 有参构造和无参构造,方法名相同,参数列表不同
-
推崇的方式
- 无论是否使用,有参构造和无参构造都要写上
六.标准的Javabean类
- 类名需要见名知意
- 成员变量使用private修饰
- 提供至少两个构造方法
- 成员方法,提供每一个成员变量对应的get/set方法,如果还有其他行为也要写上
七.对象内存图
每一款软件在运行的时候,都是需要占用一块内存区域的
java也不例外,在运行的时候,虚拟机也会占用一块内存空间,为了更好的利用这块内存,jvm将这块内存分为了5个部分
从JDK8开始,取消方法区,新增元空间,把原来方法区的多种功能进行划分,有的功能放到了堆中,有的功能放到了元空间中
但是叫什么无所谓,重要的是加载完了之后,代码该如何运行,暂时还叫方法区
当运行一个类的时候,这个类的字节码文件就会加载到方法区当中临时存储
一个对象的内存图:
在创建这个类的对象时,内存至少做以下七件事
1.加载class文件
2.申明局部变量
3.在堆内存中开辟一个空间
4.默认初始化
5.显示初始化
6.构造方法初始化
7.将堆内存中的地址值赋值给左边的局部变量
两个对象的内存图:
两个引用指向同一个对象:
八.基本数据类型和引用数据类型
从内存的角度解释:
基本数据类型:
数据值是存储在自己的空间中
特点:
赋值给其他变量,赋值的是真实的数据值
引用数据类型:
数据值存储在其他空间中,自己空间中存储的是地址值
特点:
赋值给其他变量,赋值的是地址值