面向对象基础
类和对象
面向对象和面向过程的思想对比
1、面向过程编程
是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的
2、面向对象编程
是一种以对象为中心的编程思想,通过指挥对象实现具体的功能
对象:指客观存在的事物(万物皆对象)
小结:
1、客观存在的任何一种事物,都可以看做为程序中的对象
2、使用面向对象思想可以将复杂的问题简单化
3、将我们从执行者的位置,变成了指挥者
什么是类
类是对实现生活中一类具有共同属性和行为的事物的抽象
【类】是对事物,也就是对象的一种描述,可以将类理解为一张设计图根据设计图,可以创建出具体存在的事物
类的组成
属性:该事物的各种特性
行为:该事物存在的功能(能够做的事情)
类和对象的关系
类:类是对现实生活中一类具有共同属性和行为的事物的抽象
对象:是能够看得摸得着的真实存在的实体
类的定义
类的组成:属性和行为
属性:在代码中通过成员变量来体现(类中方法外的变量)
行为:在代码中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
类的定义步骤:
1、定义类
2、编写类的成员变量
3、编写类的成员方法
对象的使用
创建对象
格式:类名 对象名 = new 类ming();
范例:students s = new students();
使用对象
1:使用成员变量
格式:对象名.变量名
范例:s.name
2、使用成员方法
格式:对象名.方法名();
范例:s.study();
垃圾回收
当堆内存中,对象或数组产生的地址,通过任何方式都不能被找到后,就会被判定为内存中的“垃圾”
垃圾会被Java垃圾回收器,空闲的时候自动进行清理
成员变量和局部变量
什么是成员变量和局部变量
成员变量:类中方法外的变量
局部变量:方法中的变量
成员变量和局部变量区别
区别 | 成员变量 | 局部变量 |
类中位置不同 | 类中方法外 | 方法内或者方法声明上(形参) |
内存中位置不同 | 堆内存 | 栈内存 |
生命周期不同 | 随着对象的存在而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法的调用完毕而消失 |
初始化值不同 | 有默认的初始化值 | 没有默认的初始化值,必须先定义,赋值,才能使用 |
封装
面向对象三大特征之一(封装、继承、多态)
隐藏实现细节,对外暴露公共的访问方式
常见体现:
私有的成员变量,提供setXxx和getXxx方法
将代码抽取到方法中,这是对代码的一种封装
将属性抽取到类中,这是对数据的一种封装
好处:
提高了代码的安全性;提高了代码的复用性
private 关键字
是一个权限修饰符
可以修饰成员(成员变量和成员方法)
被private修饰的成员只能在本类中才能访问
针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作
提供“get变量名()” 方法,用于获取成员变量的值,方法用public修饰
提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰
this关键字
概念:代表所在类的对象应用
记住:方法被哪个对象调用,this就代表哪个对象
作用:可以调用本类的成员(变量、方法)解决局部变量的成员变量的重名问题
构造方法
概述
构建、创造对象的时候,所调用的方法
格式:
方法名与类相同,大小写也要一致
没有返回值类型,连void都没有
没有具体的放回值(不能由retrun带回结果数据)
时机:
创建对象的时候调用,每创建一次对象,就会执行一次构造方法
不能手动调用构造方法
作用:用于给对象的数据(属性)进行初始化
注意事项:
构造方法的创建
如果没有定义构造方法,系统将给出一个默认的无参数构造方法
如果定义了构造方法,系统将不再提供默认的构造方法
构造方法的重载
如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法
推荐的使用方式
无论是否使用,都手动书写无参数构造方法,和带参数构造方法