面向对象
在过去学过的C语言当中 我们所用的编程思想是用的面向过程的思想,例如在生活中我们买衣服,首先我们要确定要买的衣服,怎么买 一步一步的罗列出来直至买到衣服这个一系列过程就是面对过程的思想,那么面对对象是什么样地一种思想呢?
面向对象就是将这些要想实现的功能找一个可以完成这项功能的对象来实现,简单的说就是例如你买衣服,不用你自己一步一步的操作,只要找到一个帮你买衣服的人就可以了,你找的这个人就可以是一个对象。 这就是面向对象的思想,
面向对象的好处:
1.将复杂的问题 简单化
2.从事物的执行者 转变为 指挥者
3.面向对象的思想 是 更贴近人思考问题的思想(懒人思想)
在之前说过面向对象是一种思想也是指一种程序设计范型,同时也是一种程序开发的方法那这种程序开发的方法怎么实现的呢 这里牵扯到两个名词就是 对象 和 类
1.类:
什么是类呢?
- 1
- 2
- 3
- 4
在这里我们可以把“学生”看做一个类,在这个“学生”中具体包含了有姓名、性别、年龄、身高、学号等,这一系列名词 这个是“学生”类的属性。也包含着学生可以做的一些事情,这些所做的事情就是“学生”类的行为。
2.对象
什么是对象呢?在说过类之后对象就非常好理解了,对象就是把类具体到一个单位
比如:“学生”类具体到一个学生:
- 1
- 2
- 3
- 4
将类中抽象的一类事物具体到一个的时候我们称之为对象。
那么类就是具有相同属性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。
首先先说一下在 java中 最基本的单位—— 类:
1.成员变量(实例变量) 相当于属性
书写位置:在类中,方法外
2.成员方法 相当于行为
目前成员方法跟函数写法一样 只是少一个static
面向对象的设计
1.维护类和对象之间的关系
2.不断的操作对象 使用对象 指挥对象去完成一些功能
例 创建一个类
需求:写一个学生类
成员变量:姓名 年龄 性别
成员方法:吃饭 睡觉 听课
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
}
类已经创建好了,那么接下来的问题是 如何在main函数中使用这个类来具体实例到一个对象呢?换句话说,如何使用类呢?
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
在这里存在一个问题就是为什么“zhangsan”为什么没有打印出来?
在我们使用new的时候系统会在堆内存中开辟一个空间,这里new一次,就会产生一个对象,在第二次赋值给stu.name的时候,仅仅是在之前的赋值的后进行的一次修改,所以没有输出“zhangsan”。
这是一个对象在内存中的表现 那么两个对象在内存是一个什么一个表现呢?
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
}
打印结果
这里的方法区简单的来说 存放的是.class文件,三者之间的运行过程
成员变量 和 局部变量 区别
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
匿名对象:
例
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
好处:节省代码 使用方便
用处:当你只调用一个方法时使用, 如果你要反复调用一个方法 比较浪费内存空间
匿名函数在函数的调用时,当参数是对象名、用的比较多
面向对象的特征:
1.封装
2.继承
3.多态
首先来说一下封装
封装
把属性和方法的具体实现隐藏 开放公共访问的方法
例:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
}
其中: private(权限修饰符) 系统关键字
属性添加private 这个关键字 变成私有的属性,私有属性 本类中 可以访问 本类以外访问不到
如何访问 private 修饰的成员变量
1.获取 — — get()方法
2.修改 — — set()方法
在书写代码过程中 获取和修改都是成对出现的
this关键字的使用
this就是当前这个类,你可以this.成员变量在方法中使用这个成员变量,当然this.也是可以省略的,如果与局部变量同名,可以加this.来区分。
成员变量私有化 是封装的一种表现形式, 私有化之后 必须要写 set/get方法