面向过程:动作的执行者
面向对象:1动作的指挥者。2是人们思考习惯的一种思想,3使复杂的事情简单化,
不在强调过程,而是强调对象,找到了对象,其实就找到了这些功能
面向对象:找所需功能对象,创建对象,维护对象之间的关系
面向对象语言:有三个特征。
封装,继承,多态。
类与对象之间的关系
计算机语言开发,其实就是不断用计算机语言来描述现实生活中的事物
对于java语言,它描述事物是通过类体现的
类:就是某现实事物的描述共性的
类其实就是一组对象的共性属性和行为的一个抽象,
对象:就是该事物具体实实在在存在的个体。
描述任意一类事物,其实就是在该类事物的属性和行为。
如何创建该类对象呢?
java中通过new关键字来创建实体,实体其实就是用来封装具体数据使用的,如数组就是,对象也是。
例如:Car c=new Car();//通过car类创建了一个具体对象,该对象如何使用呢,为了方便使用该对象,就给该对象起了个名字,
等号左边:定义了一个变量,是car类型的,而car是一个类,所以c是类类型变量,是一种引用类型变量(有数组,类,接口)
类类型变量一定指向对象,c.run(); //指挥车运行,调用格式:对象.对象成员
c.color="red"; //给具体的属性赋值;
类中的属性称为成员变量
定义在函数中的变量称为局部变量
成员变量和局部变量的区别。
1:作用范围:
成员变量:定义在类中,作用于整个类
局部变量:只在他所属的局部大括号内有效,
2;存储情况:
成员变量:存储在堆内存中,随着对象的存在而存在。
当对象变成垃圾被回收时,该对象中的成员变量会消失
局部变量:存储在栈内存中,当方法被调用,或者语句被执行的时候才存在。
当方法运行完毕,或者语句运行完毕时,局部会被自动释放
所以成员变量也称之为实例(对象)变量
3:初始化情况:
成员变量:在堆内存中有默认的初始化值
局部变量:必须手动初始化后,才可以被使用。
匿名对象:没有名字的对象,是定义对象的一种简化形式
使用注意:1,当对象方法进行一次调用的时候,可以使用匿名对象对代码进行简化。
为什么只调用方法,而不调用属性呢?因为匿名对象调用属性没意义。
Car c=new Car();
c.run();
简写: new Car().run();
2:匿名对象可以使用实际参数进行传递。
封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式。
private:是一个权限修饰符:只能修饰成员(成员变量和成员函数),私有的成员只在本类中有效。
当成员私有后,提高了安全性,但是访问权限降低了。
这时可以通过对外提供公有方法的形式对其进行访问,
这样的好处是,可以在方法中对成员变量的访问进行控制。
私有就是封装的一种体现形式
私有仅仅就是一种体现形式而已。
通常将成员变量私有化,并通过提供set和get方法对其进行设置和获取。
set方法返回值类型往往是void
get方法返回值类型往往是获取的成员变量类型相同。
可以对数据进行控制。
方法的定义规范,多个单词组成时,首个单词首字母小写,后面的首字母大写。
构造函数:
特点:1:函数名与类名相同
2:不用定义返回值类型
3:没有具体的返回值。
例如:class Person{
Person()
{
}
}
/构造函数在对象建立时就被直接调用,
作用:用于给对象进行初始化。
一般函数和构造函数
1:
一般函数:用于定义对象应该具备的功能
而构造函数定义的是,对象在调用功能之前,在建立时,应该具备的一些内容,也就是对象的初始化内容
:2:构造函数是在对象调用时被调用,给对象初始化,在调用后就不在调用了。只执行一次。
一般函数是对象建立后,当对象调用该功能时才会执行。
当类中没有定义构造函数时,系统会自动类加上一个空参数的构造函数。
在一个类中可以定义多个构造函数,已进行不同的初始化
多个构造函数是以重载的形式存在的。
当局部变量和成员变量重名时, 为了区别。
可以用一个this关键字
this关键字代表的是对象的引用,也就是指向一个对象,
指向哪个对象呢?
简单说:那个对象调用this所在的函数,this就代表哪个对象。
当对一个对象进行多次初始化动作执行时?
就需要用到,构造函数之间的调用,
构造函数之间调用也是需要使用this关键字。
this语句只能定义在构造函数的第一行,
因为初始化工作必须先完成。
{int x=0;
System.out.println(x);//局部代码块,可以限定变量的生命周期
}
构造代码块:用于给所有对象进行初始化,它在构造函数之前执行
构造函数是给与之对应的对象进行针对性的初始化。
对象的建立以及初始化过程:
Person p=new Person();//到底在内存中做了什么事情
1,将Person.class文件加载进内存
2.如果p定义函数中,那么在栈内存中开辟了一个变量空间p