面向过程指的是面对一个问题的解决方案,大多情况下是不会做出重用的设计思考的,而面向对象的主要设计形式为模块化设计,并且可以进行重用配置。
面向对象设计有三个主要特征:
-封装性:内部的操作对外部不可见,当内部的操作都不可直接使用的时候才是最安全的;
-继承性:在已有结构的基础上继续进行功能的扩充;
-多态性:是在继承性的基础上扩充而来的概念,指的是类型的转换处理。
在进行面向对象程序的开发过程中一般还有三个步骤:
-OOA:面向对象分析;
-OOD:面向对象设计;
-OOP:面向对象编程。
类与对象:
类是对某一类事物的共性的抽象概念,而对象描述的是一个具体的产物。
类中有的方法才是对象可以使用的方法,类中有的属性才是对象可以保存数据的位置。
常用内存空间:
-堆内存:保存的是对象的具体信息,在程序之中堆内存空间的开辟是通过new完成的。
-栈内存:保存的是一块堆内存的地址,即:通过地址找到堆内存,而后找到对象的内容,但是为了分析简化起见可以简单的理解为:对象名称保存在了栈内存之中。
所有的对象在调用类中的属性或方法的时候必须要实例化完成后才能执行,否则会报空指针的错,即没有开辟堆内存。不过只有引用数据类型会报这样的错。
引用传递
本质:同一块堆内存空间可以被不同的栈内存所指向,也可以更换指向。
可以在主方法之中定义引用传递,也可以通过方法实现引用传递处理。
所谓垃圾空间指的就是没有任何栈内存指向的堆内存空间,所有的垃圾都会被GC(垃圾收集器)不定期进行回收并且释放无用内存空间,但是如果垃圾过多,一定会影响到GC的处理性能,从而降低整体的程序性能,那么在实际的开发之中,对于垃圾的产生应该越少越好。
一个栈内存只能够保存一个堆内存的地址数据,如果发生更改,则之前的地址数据从此栈内存中彻底消失。
利用private对属性进行封装处理,而属性一旦封装之后外部将不能够直接访问,即:对外部不可见,但是对类的内部是可见的。
要想访问封装的属性,有以下方法:
-设置或获得属性可以使用setXxx()、getXxx()方法
-可以通过构造方法实现实例化对象中的属性初始化处理
构造方法要求:
-方法名称与类名称保持一致
-无返回值
-构造方法是在使用关键字new实例化对象时自动调用的。
就算没有写构造方法,默认也会有自动创建无参的构造方法。如果定义了构造方法,那么就不会自动创建。
为什么没有返回值定义呢?
原因是:如果使用了void,那么就与普通方法的结构相同了,这样编译器就会认为此方法是一个普通方法。普通方法和构造方法最大的区别:构造方法是在类对象实例化的时候调用的,而普通方法是在类对象实例化产生之后调用的。
构造方法重载只需要考虑参数的类型和个数。
匿名对象:没有对象名,直接用new 类名()调用方法和属性。