1、面向对象概念:
*面向对象是相对面向过程而言
*面向对象和面向过程都是一种思想
*面向过程强调的是功能行为
*面向对象将功能封装进对象,强调具备了功能的对象。
*面向对象是基于面向过程的
2、面向对象和面向过程的区别:
*举例:
把大象装进冰箱;
面向过程:
**打开冰箱;
**存储大象:
**关上冰箱。
对于面向过程思想,强调的是过程(动作)。
如C语言
面向对象:
**冰箱打开
**冰箱存储
**冰箱关闭
如C++ Java C#
对于面向对象思想,强调的是对象(实体)。
3、特点:
*面向对象就是一种常见的思想。符合人们的思考习惯
*面向对象的出现,将复杂的问题简单化
*面向对象的出现,让曾经在过程中的执行者,变成了对象中的指挥者。
*有对象用对象,没对象造对象用对象,维护对象之间的关系
面向对象的特征:
封装(encapsulation)
继承(inheritance)
多态
完成需求时:
先要去找具有所需的功能的对象来用。
如果该对象不存在,那么创建一个具有所需功能的对象。
这样简化开发并提高复用。
开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。
设计的过程:其实就是在管理和维护对象之间的关系。
构造代码块
对象一建立就运行,而且还优先于构造函数执行。
构造代码块和构造函数的区别:
构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象进行初始化
构造代码块中定义的是不同的对象共性的初始化内容。
4、类与对象
(1)类:用java语言对现实生活中的事物进行描述。
通过类的形式来体现。
怎样描述?
对于事物描述通常只关注两个方面
一个是属性,一个行为
只要明确该事物的属性和行为,并定义在类中即可。
对象:其实就是该类事物实实在在存在的个体。
(2)类与对象之间的关系?
类:事物的描述
对象:该类事物的实例。在java中通过new来创建。
类类型引用变量,指向了该类对象。
定义类就是定义类的成员:
成员:成员变量-->属性
成员函数-->行为。
对于同一类事物可以抽取它们的共性的内容,定义在类中。
可以理解为:
类就是图纸
汽车就是堆内存中的对象
代码示例:
class Car{//对Car这类事物进行描述
String color = "red";
int num = 4;
void show(){
System.out.println("color="+color+"..num="+num);
}
}
class CarDemo{
public static void main(String[] args){
Car c = new Car();//建立对象
c.color = "black";//对对象的属性进行修改
c.show();//使用对象的功能。
}
}
(3)成员变量和局部变量的区别:
*成员变量定义在类中,整个类中都可以访问。
局部变量定义在函数、语句、局部代码块中,只在所属的区域有效。
*成员变量存在于堆内存的对象中。
局部变量存在于栈内存的方法中。
*成员变量随着对象的创建而存在,随着对象的消失而消失
局部变量随着所属区域的执行存在,随着所属区域的结束而释放。
*成员变量都有默认初始值
局部变量没有默认初始值。
(4)匿名对象。没有名字的对象。
new Car();匿名对象。其实就是定义对象的简写形式
*当对象对方法仅进行一次调用的时候,就可以简化成匿名对象。
*匿名对象可以作为实际参数进行传递。