面向对象
思想:
面向对象是基于面向过程的编程思想。
面向过程:强调的是每一个功能的步骤
面向对象:强调的是对象,然后由对象去调用功能
面向对象的思想特点:
A:是一种更符合我们思考习惯的思想
B:可以将复杂的事情简单化
C:将我们从执行者变成了指挥者
举例:
买电脑:
面向过程:我要买电脑--明确买电脑的意义--网上查对应的参数信息--去中关村买电脑--讨价还价--买回电脑
面向对象:我要买电脑--班长去给我买电脑--买回电脑
洗衣服:
面向过程:把衣服脱下来--找一个盆--放点洗衣粉--加点水--浸泡10分钟--揉一揉--清洗衣服--拧干--晾起来
面向对象:把衣服脱下来--打开全自动洗衣机--扔衣服--按钮--晾起来
------------------------------------------------------------------------------------------------------------------
我们学习编程语言,其实就是为了把现实世界的事物模拟出来,实现信息化
我们是如何表示现实世界的事物的呢?
A:属性 就是事物的描述信息
B:行为 就是事物能够做什么
举例:学生
java语言最基本的单位是类,所以,我们在后面的学习过程中,是通过类来实现现实世界事物的
类:是一组相关的属性和行为的集合
对象:就是该事物的具体体现
举例:
类 学生
对象 班长
类的定义:
类是用来描述现实世界的事物的
事物:
A:属性 就是事物的描述信息
B:行为 就是事物能够做什么
类是如何和事物进行对应的呢?
类:
成员变量
成员方法
需求:写一个学生类
学生事物:
属性:姓名,年龄...
行为:学习,吃饭...
学生类:
成员变量:姓名,年龄
成员方法:学习,吃饭
成员变量:和我们前面学习过的变量的定义是一样的
位置不同:类中,方法外
初始化值:不需要给初始化值
成员方法:和我们前面学习过的方法的定义是一样的
去掉static关键字
------------------------------------------------------------------------------------------------------------------
Student是一个 学生 事物描述类,main方法不适合放在它里面
使用一个类,其实就是使用 该类的成员(成员变量和成员方法)
而我们要想使用一个类的成员,就必须首先拥有该类的对象
我们如何拥有一个类的对象呢 ?
创建对象就可以了
我们如何创建对象呢?
格式 :类名 对象名 = new 类 名 ();
对象如何访问成员呢?
成员变量:对象名.变量名
成员方法:对象名.方法名(...)
成员变量和局部变量的区别:
A:在类中的位置不同
成员变量:类中,方法外
局部变量:方法中或者方法声明上(形式参数)
B:在内存中的位置不同
成员变量:堆内存
局部变量:栈内存
C:生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
D:初始化值的问题
成员变量:有默认值
局部变量:没有默认值。必须先定义,赋值,最后使用
通过对象直接访问成员变量,会存在数据安全问题
这个时候,我们就想能不能不让外界的对象直接访问成员变量呢?
能
private关键字
是一个修饰符,可以修饰成员变量,也可以修饰成员方法
被private修饰的成员只能在本类中被访问。
针对private修饰的成员变量,我们会相应的提供getXxx()和 setXxx()用于
获取和设置成员变量,方法用public修饰
*****(成员变量跟随成员对象进入堆内存)*****
成员变量私有的标准代码
private不能修饰局部变量和局部方法
封装的概述和好处
如果有局部变量名与成员变量名相同,在局部使用的时候,采用的是就近原则
用this关键字来解决成员变量与局部变量同名的问题
构造方法的格式
作用:给对象的数据进行初始化
格式:方法名和类名相同
没有返回值类型,连void都不能写
没有具体的返回值
调用:通过new关键字调研
格式:
类名 对象名 = new 构造方法(...);
Student s = new Student();
注意事项:
A:如果我们没有给出构造方法,系统会提供一个默认的无参构造方法供我们使用
B:如果我们给出了构造方法,系统将不再提供默认的无参的构造方法
如果想使用无参构造方法,我们自己得给一个构造方法
推荐:自己给无参构造方法
C:构造方法也是可以重载的
成员变量赋值:
A:setXxx()方法
B:构造方法
*********构造方法只能用new来调用*********
构造方法和set方法都可以给成员变量赋值
构造方法对于对象来说,终身只能调用一次
set方法可以调用多次
set方法可以用来给成员变量修改值
生而有值用构造方法
生后改值用set方法
类名作为形式参数:其实这里需要的是该类对象。 |
|