一、面向对象与面向过程
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等面向对象语言编程的时候,要选用前者的写法。
四、结言
因为刚学到这一部分的内容加上个人水平有限,理解上会有所偏颇,有错误的话希望各路大神斧正