讨论面向对象之前,首先要想一下什么是面向过程
<1>面向过程概述
其实就是面向具体的每一个步骤和过程,把每一个步骤和过程完成,然后有这些功能方法相互调用,完成功能
代表语言:c语言
<2>面向对象概述
面向对象是基于面向过程的编程思想,其强调的是对象,有对象调用功能 。
特点:
A:是一种更符合我们习惯的思想
B:可以将复杂的事情简单化
C:将我们从执行者变成指挥者
<3>类与对象概述
java的最基本的单位是类,类是用来描述现实事物的
类:是一组相关属性的集合 学生
对象:是该事物的具体体现 班长
<4>类
定义:是用来描述现实世界的事物的
事物两种体现:
A:属性 事物的描述信息
B:行为 事物能够做什么
类与事物如何对应呢?
A:成员变量体现属性
B:成员方法体现行为
<5>类的使用
格式 类名 对象名 = new 类名(……);
对象如何调用成员呢(成员包括成员变量和成员函数)
成员变量:对象名.变量名
成员方法:对象名.方法名(……);
<6>对象内存图
(1)一个对象内存图
(2)方法共用内存图
(3)两个引用指向同一个对象
<7>成员变量和局部变量的区别
A:在类中的位置不同
成员变量:类中,方法外
局部变量:方法中,或方法声明上(形式参数)
B:在内存中位置不同
成员变量:在堆内存
局部变量:在栈内存
C:生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而创建,方法调用完毕而消失
D:初始化值不同
成员变量:有默认值
局部变量:无默认值,必须定义,赋值,最后使用
<8>private关键字及使用
private关键字:是一个修饰符,可以修饰成员变量,也可以修饰成员方法,只能在类中使用
针对private修饰的成员变量,我们会相应的给出getXXX()和setXXX(),用于获取和设置成员变量,getXXX()和setXXX()用public修饰
<9>封装的概述及好处
(1)概述
A:面向对象三大特征之一
面向对象三大特征:封装,继承,多态
B:是面向对象编程语言堆客观世界的模拟,客观世界里成员变量都是隐藏在对象内部,外界无法修改
(2):原则
A:将不需要对外提供的内容隐藏起来
B:把属性隐藏,提供公共方法供其访问
(3)好处
A:提高代码安全性
B:提高代码复用性
<10>this关键字及使用
如果有局部变量名和成员变量名相同,在使用的时候,采用就近原则,就是将变量赋值给本身(局部变量),而不是赋值给成员变量
如何解决?
用this关键字
this关键字代表所在类对象的引用
可以看成,当前类定义的对象为this,用this访问成员变量
<11>构造方法
(1)作用:给对象的数据进行初始化
(2)格式:方法名与类名相同
没有返回值类型,连void都不写
没有具体的返回值
(3)调用:通过new关键字调用
格式:类名 对象名 = new 构造方法(……);
(4)注意:
A:如果没有构造方法,系统将会提供一个默认无参构造方法
B:如果我们提供了构造方法,系统将不会提供一个默认无参构造方法,若想用无参构造方法,我们需自己写无参构造
C:构造方法也是可以重载的
(5)成员变量赋值:
A:setXXX(……)方法
B:带参构造方法
注意:若返回值类型是类名,则返回的是该类对象