面向对象的概述
面向对象和面向过程的区别:
面向过程举例:
* 大象装进冰箱
*
* 面向过程
*
* 打开冰箱
* 存储大象
* 关上冰箱
*
* 对于面向过程思想,强调的是过程(动作)
面向对象举例:
* 对于面向对象思想,强调的是对象(实体)。
*
* 冰箱打开
* 冰箱存储
* 冰箱关闭
面向对象
特点:
1:面向对象就是一种常见的思想,符合人民的思考习惯
2:面向对象的出现,将复杂问题简单化
3:面向对象的出现,让曾经的过程中的执行,变成了对象中的指挥者
类与对象之间的关系
* 用java语言对现实生活中的事物进行描述。
* 通过类的形式来体现的。
*
*
* 怎么描述呢?
* 对于事物描述通常只关注两个方面。
* 一个是属性,一个是行为
*
* 只要明确该事物的属性和行为并定义在类中即可。
*
* 对象:其实就是该类事物实实在在存在的个体。
*
* 类与对象之间的关系?
* 类:事物的描述
* 对象:该类事物的实例。在java中通过new来创建的
面向对象(类与对象体现)
描述小汽车
分析:
1,属性。
轮胎数。
颜色。
2.行为
运行。
定义类其实就是在定义类中的成员。
成员:成员变量<–>属性,成员函数<–>行为。
class Car{ //图纸
int num=4;//基本类型,默认初始化值为0,现在赋值为4。
String color;//引用类型变量,默认初始化为null。
void run(){
System.out.println(num+color);
}
}
public class Demo{
public static void main(String[] args) {
//在计算机中创建一个car的实例,通过new关键字
Car c=new Car();//c就是一个类类型的引用变量,指向了该类的对象。
c.num=4;
c.color="red";
c.run();//要使用对象中的内容可以通过 对象.成员的形式来完成调用。
}
}
类和对象的关系:
在上面的代码可以说,类其实就是图纸。就是说。一辆汽车做出来有轮胎,什么颜色。怎么样跑。也就是class Car{}这段代码的体现。
既然图纸已经有了,下面就需要做车这实实在在的东西出来了,而在计算机中做车出来,是通过new这个关键字的。上面就做出了c这辆车出来。然后就可以确定有多少个轮胎,颜色,和到底怎么跑。计算机调用的方式就是 对象.成员的形式来完成调用的。
对象的内存体现
首先在栈内存中,主函数进栈,然后产生类类型变量c;
在堆中,产生对象。并生成地址值0x0034。并把地址值,赋值给c
。然后,会把num,color初始化。初始化的值分别是0,null。到这里Car c=new Car();这段代码执行完毕。
然后,到c.num=4;这段代码,会把num=0,赋值为4。同理color也会赋值为red。
每一个对象都有各自的内存空间,互不打搅。
看图片。
由这张图片可以看出来,c1和c2这2类类型。new Car()2次产生2对象。虽然代码的执行上是依次交替执行,但是,他们的堆内存中开辟出来的空间,是互相不打搅的。
这张图片说明了,c1产生的这个类类型所有的地址值,同时也把该地址赋值给了c2这个类类型。所以c1和c2表面上是名字不相同,但是实质上都是0x0034这个地址值。他们都是可以操作Car c1=new Car();产生的对象。
c1.num=8;c1可以操作num;
c2.color=”red”;c2可以操作颜色。