面向对象是相对面向过程而言的,是一种编程思想。面向过程强调的是功能行为,而面向对象是将功能封装进对象,强调具备了功能的对象。一个事物可能有很多复杂的功能,用面向过程进行处理就要顺序处理这些复杂的功能,而用面向对象的话面对的就是这个单纯地事物,可以说把复杂的问题简单化了,而编程者也从功能的执行者变成了指挥者。面向对象是基于面向过程的。
2.类和对象的关系:
类:对现实生活中事物的描述
对象:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。
类是对象的模版,对象是类的一个个体
3.类和对象的创建:
定义类就是在描述事物,定义事物的属性和行为:
[修饰符] class类名
{
成员变量
成员方法
}
定义对象实际上就是在堆内存中产生一个实体:
类名 对象名 = new类名();
如:
Person p= new Person(“zhangsan”,20)
过程:
-
new Person()时,Jvm通过类加载器将Person.class文件从外存中加载到内存
-
如果有静态代码块,则紧接着被执行,给Person.class进行初始化
-
开辟堆内存空间,分配内存地址
-
在堆内存中建立对象的特有属性并进行默认初始化name=null,age=0
-
对对象进行显式初始化,将成员变量的给定值赋给对象的变量(例如,前面的代码有private int age=30,则将对象中的age设为30)
-
如果有构造代码块,则紧接着构造代码块初始化
-
构造函数初始化,把“zhangsan”,20赋给name和age
-
将内存地址赋给栈内存中的p变量
4.成员变量和局部变量
作用范围:
成员变量作用于整个类中,局部变量作用于函数或者语句中
在内存中的位置:
成员变量存在堆内存中,因为对象的存在才在内存中存在
局部变量存在栈内存中
5.匿名对象
匿名对象是对对象的简化形式
匿名对象两种使用情况:
(1)当对象方法仅进行一次调用时(每次调用产生的都是新对象)
new Car().run(); //单纯调用run方法
(2)匿名对象可以作为实际参数进行传递
show(new Car()); //创建一个匿名对象作为参数传给show()使用