一:什么面向对象
面向对象是一种编程思想,就是将我们的程序模块化,对象化;通过这种思想可以把生活中的复杂事情变得简单化,从原来的执行者变成了指挥者,面向对象是基于面向过程而言的。
以前的编程是面向过程的,强调的是过程 !例如:1、打开冰箱 2、把大象放进去 3、关上冰箱
而现在面向对象强调的是结果! 例如:饿了,去平台点餐,这个动作就是面向对象
1.面向对象的三大特征:
-
封装性:把我们需要的对象的属性和方法封装成一个"类";<1、 提高安全性2、 提高重用性>
(1)、 计算机语言是用来描述现实世界事物的。属性+行为
(2)、 那怎么通过java语言描述呢?通过类来描述事物,把事物的属性当做成员变量,把行为当做成员方法。
分析手机事物:
属性:颜色,尺寸,品牌,价格。。。
方法:打电话,发短信,听音乐。。。。
类:手机类,抽取相同的属性和行为
对象:可以按照模板生产很多个手机,比如1号手机对象,包含特有的成员变量和成员方法 -
继承性:继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
特点:
(1)、 使用extends关键字
(2)、 java只支持单继承, 相当于子类把父类的功能复制了一份
(3)、 继承可以传递(爷爷,儿子,孙子的关系)
(4)、 继承多用于功能的修改,子类可以拥有父类的功能的同时,进行功能拓展
(5)、 不能继承父类的私有成员 -
多态:多态指同一个实体同时具有多种形式。它是面向对象的一个重要特征。
特点:
(1)、 多态的前提是继承
(2)、 要有方法的重写
(3)、 父类引用指向子类对象,如:Animal a = new Dog(); – 小到大,向上转型
(4)、 多态中,编译看左边,运行看右边
对象在内存中的存储:
1、 一般来讲局部变量存在栈中,方法执行完毕内存就被释放
2、 对象(new出来的东西)存在堆中,对象不再被使用时,内存才会被释放
3、 每个堆内存的元素都有地址值
4、 对象中的属性都是有默认值的
1、 在栈内存中,创建一个引用变量p,持有对象的地址值
2、 在堆内存中,创建Person对象,并且开辟变量的空间,完成初始化
3、 给堆内存中的元素,分配一个唯一标志,地址值。交给p去保存。
4、 p.name=”lisi”;p.age=20;就去堆内存中找唯一的地址值,找到Person对象,并对其属 性进行修改赋值。
5、 p.eat();就去堆内存中找唯一的地址值,找到Person对象,执行Person对象的方法。