【个人笔记】什么是面向对象及其与面向过程的区别

225 阅读3分钟

一、面向对象与面向过程

1.面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。

2.面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。

二、什么是面向对象

面向对象中两个重要的概念: 类:对一类事物的描述,是抽象的、概念上的定义 对象:是实际存在的该类事物的每个个体,因而也称为实例

public class Person {
    
    //属性
    String name;	//姓名
    int age;		//年龄
    
    //方法
    public void talk(){
        System.out.println("说话");
    }
    
     public void walk(){
        System.out.println("走路");
    }  
}

这是一个类,定义了“人”这个概念,这是抽象的。他有名字、年龄,这些是他的属性,人可以说话,可以走路,这些是我们定义的“人”能做出的行为,这些行为相当于类的方法。还有构造器、代码块、内部类这些东西,可以类比成人的构造,人的系统等等。然后我们把这个类实例化

public class Exapmle {
    public static void main(String agrs[]){
           Person A = new Person(); 	//实例化A,系统为其开辟了一片内存空间,相当于一个人出生了
           A.name = "张三";		//给这个“人”命名,声明他的年龄
           A.age = 18;
        
           A.talk();		//让这个“人”说话      
    }
}

在我们创造了“人”这个概念以后,我们把他实例成A这个具体的对象,这个A是实际存在的,他叫张三,18岁,能说话能走路。我们可以增加人的属性和方法,还有构造器、代码块、内部类,使这个对象更完善,比如他的性别、发量、爱好,他能唱歌跳舞打麻将.......面向对象的一个要点是由谁来做,把一个程序比作一群人在建房子,和水泥是张三做的,负责搬砖的是李四,监工是王五,重点不是怎么和水泥怎么搬砖,而是这个活是谁做的,这样在写一个大程序的时候,思路就会容易理清

三、面向对象与面向过程的区别

//代码一
public class Pai {								
	public static void main(String args[]){
		Count z = new Count();
		count.radius = 3.0;			//给对象z的半径赋值
		System.out.println(z.c());	//打印面积返回值
	}
}

 class Count{
	double radius;	//半径
	public double c(){
		return Math.PI* radius * radius;	//计算圆的面积,Math.PI就是π
	}
}
//代码二
public class Pai {
	public static void main(String args[]){
		Count z = new Count();
		double radius = 3.0;
		System.out.println(z.c(radius));	//打印面积返回值
	}
}

 class Count{
	public double c(double radius){
		return Math.PI* radius * radius;	//计算圆的面积,Math.PI就是π
	}
}

以上两段代码得到的结果都是一样的,但是前者更注重的是把”z“这个对象的面积求出来。后者更注重的是”求圆的面积“这个过程,至于是圆z求的还是圆abcdefg求的并不重要。在写c语言程序的时候,就类似于后者,我们会把求圆的面积这个函数写好,然后封装,最后在主程序中调用,而不会在意谁要使用这个函数。所以在用Java等面向对象语言编程的时候,要选用前者的写法。

四、结言

因为刚学到这一部分的内容加上个人水平有限,理解上会有所偏颇,有错误的话希望各路大神斧正