面向对象编程(Object Oriented Programming,OOP)基础
面向过程编程
开发一个一个的方法,有数据要处理了,我们就调方法来处理。此时程序类似于流水线,按照代码自上而下依次运行。
面向对象编程
开发一个一个的对象来处理数据,把数据交给对象,再调用对象的方法来完成对数据的处理。程序在对象的交互中完成运行。
类与对象
什么是对象
对象就是具体的东西,一个具体的人是一个对象,一辆具体的车也是对象。
什么是类
类就是从对象中抽象出来的一类东西的总称,人这个类就是从一个个具体的人中抽象出来的。
面型对象编程的好处
符合人类的思维习惯,使编程更简单、更直观。
类的格式
public class 类名 {
修饰符 数据类型 变量名称; //成员变量
修饰符 返回值类型 方法名称 (...) {...}; //成员方法
修饰符 类名 (形参列表) {...}; //构造器
代码块
内部类
}
成员变量
类内部定义的变量。
成员方法
类内部定义的方法。
构造器
创建对象时调用的方法,其方法名必须与类名一致。
创建对象的格式
类名 变量名 = new 类名(实参列表); //实参列表可以为空
对象怎么使用
- 访问成员变量:
对象名.成员变量名;
- 访问成员方法:
对象名.成员方法(...);
对象的执行原理
-
当创建对象时,对象的变量名会加载到栈内存中,其对应的类的代码会被加载到方法区中。
-
然后在堆内存中开辟一块内存空间,保存创建的对象,其中包含内部的成员变量以及一个类的地址变量,它保存类在方法区中的代码的地址。
-
之后栈内存中的对象变量被赋值为堆内存中对象的地址。
如何识别引用类型的变量
只要变量中存储的是对象的地址,此变量就是引用类型的变量。
类和对象的一些注意事项
-
类名建议用英文单词,首字母大写,满足驼峰模式,且要有意义,比如:Student、Car…
-
类中定义的变量也称为成员变量(对象的属性),类中定义的方法也称为成员方法(对象的行为)。
-
成员变量本身存在默认值,默认值与动态初始化数组元素的默认值相同,同学们在定义成员变量时一般来说不需要赋初始值(没有意义)。
-
一个代码文件中,可以写多个class类,但只能一个用public修饰,且public修饰的类名必须是代码文件名。
-
对象与对象之间的数据不会相互影响,但多个变量指向同一个对象时就会相互影响了。
-
如果某个对象没有一个变量引用它,则该对象无法被操作了,该对象会成为所谓的垃圾对象。
-
Java存在自动垃圾回收机制,会自动清除掉垃圾对象。
this关键字
this是什么
this就是一个变量, 可以用在方法中 ,用来拿到当前对象的地址,可以访问当前对象的成员变量和成员方法;哪个对象调用方法,this就指向哪个对象,也就是拿到哪个对象。
this的的执行原理
当方法被定义好之后,Java会在编译时在方法的参数列表中增加一个this变量,这个this变量会保存该对象的地址。
this的应用场景
- 解决对象的成员变量与方法内部变量的名称一样时,导致访问冲突问题的:
- 用在有参构造器中。
- 用在方法中。
构造器
构造器是什么
创建对象时会自动调用的方法,构造器可以在创建对象时实现成员变量的初始化以及其他的操作,常用于完成对象的初始化。
构造器的格式
public 类名(形参列表) {...}
构造器不需要返回值
构造器的分类
- 无参构造器:形参列表为空。
- 有参构造器:形参列表不为空。
构造器的特点
- 类在设计时,如果不写构造器,Java是会为类自动生成一个无参构造器的。
- 一旦定义了有参数构造器,Java就不会帮我们的类自动生成无参构造器了,此时就建议自己手写一个无参数构造器出来了。
- 构造器也可以重载。
封装
面向对象的三大特征
- 封装
- 继承
- 多态
什么是封装
就是用类设计对象处理某一个事物的数据时,应该把要处理的数据,以及处理这些数据的方法,设计到一个对象中去包装起来。
封装的设计规范
合理隐藏,合理暴露。
具体实现:
- 将所有成员变量隐藏起来,并同时提供setter和getter方法。
- 根据实际需求选择隐藏或者暴露成员方法。
如何控制对象的成员公开或隐藏
- 公开成员:使用public进行修饰。
- 隐藏成员:使用private进行修饰。
实体JavaBean(实体类)
实体类是什么
就是一种特殊的类,这些类与现实中的类相似,它只是一个用来保存数据的java类,可以用它创建对象,保存某个事物的数据。
实体类的要求
- 成员变量必须私有。
- 为所有成员变量提供setter和getter方法。
- 必须有无参数构造器。
实体类的应用场景
实体类对应的是软件开发里现在比较流行的开发方式,数据和数据的业务处理相分离。数据的保存使用实体类,数据的业务处理使用操作类。
补充1:成员变量和局部变量的区别
区别 | 成员变量 | 局部变量 |
---|---|---|
类中位置不同 | 类中,方法外 | 常见于方法中 |
初始化值不同 | 有默认值, 不需要初始化赋值 | 没有默认值,使用之前必须完成赋值 |
内存位置不同 | 堆内存 | 栈内存 |
作用域不同 | 整个对象 | 在所归属的大括号中 |
生命周期不同 | 与对象共存亡 | 随着方法的调用而生,随着方法的运行结束而亡 |
补充2:IDEA中的快捷方式
IDEA中可以按alt+insert自动生成setter、getter方法和任意参数的构造器。
标签:Java,变量,对象,成员,笔记,构造,方法,类名,第七天 From: https://www.cnblogs.com/zgg1h/p/18056260