一、Java 面向对象

1.面向对象概念

面向对象是相对于面向过程而言,面向对象和面向过程都是一种思想。

(1)面向过程:

强调的是功能行为。代表语言:C语言。

(2)面向对象:

将功能封装进对象,强调了具备功能的对象。代表语言:Java,C++,C#。

区别:面向过程是一件事情“该怎么做”,面向对象是一件事“该让谁来做”,然后那个“谁”就是对象,他要怎么做是他自己的事情,反正最后一群对象合力能把事情做好就行了。

2.面向对象的特点


是一种符合人们思考习惯的思想,可以将复杂的事情简单化,将程序员从执行者转换成了指挥者。


完成需求时:

(1)先要去找具有所需功能的对象来用。

(2)若果该对象不存在,那么创建一个具有所需功能的对象。

(3)这样可以简化开发并提高复用。

3.面向对象的开发、设计、特征

开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。

设计过程:其实就是在管理和维护对象之间的关系。

面向对象特征(特点):

(1)封装(encapsulation)

(2)继承(inheritance)

(3)多态(polymorphism)

二、类与对象之间关系



使用计算机语言就是在不断描述现实生活中的事物。

java中描述事物通过类的形式体现。

对象即是该类事物实实在在地存在的个体。

1.类与对象的关系(图例)



java 面向过程编程_匿名对象



可以理解为:类就是图纸,汽车就是堆内存中的对象。



2.类的定义



(1)生活中描述事物无非是描述事物的属性和行为。



如:人有身高,体重,年龄等属性,有走路,吃饭等行为。

(2)Java中用类class来描述事物也是如此

属性:对应类中的成员变量。

行为:对应类中的成员函数。

(3)定义类其实就是在定义类中的成员(成员变量和成员函数)

3.成员变量和局部变量的区别



成员变量:

(1)成员变量定义在类中,整个类中都可以被访问。

(2)成员变量随着对象的建立而建立,随着对象的消失而消失,保存在堆内存中。

(3)成员变量有默认初始化值。

局部变量:

(1)局部变量局部范围内,如:函数,语句中。

(2)局部变量存在于栈内存中,作用范围结束,变量空间自动释放。

(3)局部变量没有默认初始化值。

4、创建和使用对象



class Car
{	
	String color = "red";//描述颜色	
	int num = 4;//描述轮胎数
	
	void run()//运行行为。
	{
		System.out.println(color+".."+num);
	}	
}
class  CarDemo
{
	public static void main(String[] args) 
	{
		//生产汽车。在java中通过new操作符来完成其实就是在堆内存产生一个实体。
		Car c = new Car();//c就是一个类类型变量。记住:类类型变量指向对象。
		c.color = "blue";//对对象的属性进行修改,改为蓝色。		
		c.run();//使用对象的功能
	}
}

5.对象内存结构



内存结构示意图:



java 面向过程编程_匿名对象_02

    由上图可知,每用new新建一个实体对象时,堆内存都会为新实体对象开辟新的空间,且每一对象都有一份属于自己的属性。

当改变其中一个对象的属性时(C1颜色由红变蓝),其他对象相应的属性不会发生改变(C2颜色不变)。

6.匿名对象



匿名对象是对象的一种简化形式。

匿名对象使用两种情况:

(1)当对对象方法仅进行一次调用时。

(2)匿名对象可以作为实际参数进行传递。

示例:

//匿名对象是没有别其它对象所引用,使用一次就变成垃圾了,然后被垃圾回收器收回。
public class People  
{  
	String name = "张三";
	int age = 20;
    	public void run()  
    	{  
       	 System.out.println(name+":"+age);  
    	}  
    	public static void show(People p)
	{		
		p.name = "李四";
		p.age = 25;
		p.run();
	}
   	 public static void main(String[] args)  
    	{  
       	 	//当对对象方法仅进行一次调用时  
         	new People().run();
		//将匿名对象作为实际参数进行传递
		show(new People());
    	}  
}