面向过程:
就是面向着具体的每一步步骤和过程,把每一个过程完成,然后由这些功能方法相互调用,完成需求。
代表:C语言
使用条件:需求单一或简单
面向对象:
就是不断的创建对象,使用对象,指挥对象做事情。将步骤和功能进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起。
特点:更符合我们的思想习惯
可以将问题简单化
使得我们的角色从执行者变成了指挥者
特征:封装、继承和多态。
我们学习编程,就是为了模拟现实世界的事物,实现信息化。使生活更加便利和美好。那么为了达到这个目的,我们首先要思考我们应该如何描述现实世界的事物。
事物有两个特性:属性和行为。属性就是该事物的特征,描述信息。行为则是该事物能够做什么,能够实现什么功能。
结合JAVA语言来看,JAVA语言中最基本的单位是类,我们可以通过一个类来体现事物。与之对应的,我们就可以用成员变量来对应事物的属性,成员方法来对应事物的行为。
类:
是一组相关的属性和行为的集合;定义类就是定义类的成员(成员变量和成员方法)。成员变量的定义在类中,在方法外。
创建对象的格式:类名 对象名 = new 类名();
创建对象的过程中,以创建一个学生对象为例:
(1):加载Student.class文件进内存
(2):在栈内存为s开辟空间
(3):在堆内存为学生对象开辟空间
(4):对学生对象的成员变量进行默认初始化
(5):对学生对象的成员变量进行显示初始化
(6):通过构造方法对学生对象的成员变量赋值
(7):学生对象初始化完毕,把对象地址赋值给s变量
使用对象的格式:格式:对象名.变量名
使用成员方法:格式:对象名.方法名(...)
类中提供了两种给成员变量复制的方法,一种是set方法,一种是通过构造方法。
要输出成员变量值,可以通过get()方法,调用定义的很常用的show 方法。
成员变量和局部变量的区别:
A:在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
B:在内存中的位置不同
成员变量:在堆内存
局部变量:在栈内存
C:生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
D:初始化值不同
成员变量:有默认初始化值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
需要注意的是: 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
JAVA中的参数传递问题
首先看形参:形参中我们既可以使用基本类型也可以使用引用类型。
当使用基本类型时,形式参数的改变不影响实际参数
当使用引用数据类型时,形式参数的改变会直接影响实际参数。
当一个参数的形式参数是一个类类型,其实我们需要的是该类的对象作为形式参数。
匿名对象:没有名字的对象
应用场景:a.为了调用一次方法的时候(仅调用一次)b.作为实参进行传递
封装:
指隐藏对象的属性和实现细节,仅对外提供公共访问方式。 是我们在JAVA中最常使用的一种思想
优点:隐藏了具体实现的细节,提供了公共的访问方式。提高了代码的复用性,节省了空间和时间。提高了安全性。
原则:隐藏属性,提供公共方法来对属性进行访问。
private:是一个权限修饰符,可以修饰成员变量和成员方法,被修饰的成员只能在本类中访问,我们进场使用private来提供对应的get 和set 方法。
this:是当前类的对象引用,简单的说,他就代表当前类的一个对象,谁调用这个方法,这个this 就代表谁。这个关键字主要用于局部变量和成员变量相同时,局部变量隐藏了成员变量的问题。
static:
特点:被static 定义的成员变量或者成员方法,加载的时机很早,随着类的加载而加载。
优先于对象存在,因为是随着类的加载而加载的,对象是后来new 出来的
被类的所有对象所共享。(根据这个特点我们也可以看出,如果一个成员变量应该被所有对象共享,那他应该被定义成静 态的)
可以通过类名直接调用。也可以通过对象名调用。
注意事项:在静态方法中没有this关键字,因为静态是随着类的加载而加载的,this是随着对象的创建才存在的,初始化这个方 法的时候,还没有对象。静态只能访问静态,,非静态的可以访问讲台也可以访问非静态的。
静态变量和成员变量的区别:
A:所属不同
静态变量属于类,所以也称为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
B:内存中位置不同
静态变量存储于方法区的静态区(共享区)
成员变量存储于堆内存
C:内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
D:调用不同
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用
构造方法:
作用::用于创建对象,给对象中的成员进行初始化
特点:构造方法名和类名相同,他没有返回值类型,连void 都没有,也没有具体的返回值。
***对于构造方法,当我们没有定义构造方法时,系统会默认提供一个无参构造,但是一旦我们定义了构造方法,徐彤就不会在提供默认的无参构造。这时候,如果我们还想使用无参构造,就要自己给出。