1、面向对象与面向过程
先简单的理解
面向过程就是注重过程,就像我们之前学的,注重怎么一步一步的去实现,但面向对象,就会把面向过程封装起来,直接得到我们想要的结果。
比如我们之前如果要求一个阶乘,我们会for循环…一系列操作,但面向对象,我们只需要给一个值,然后我们直接得到阶乘结果,至于过程,全被封装起来,直接使用得到我们想要的结果。
再来一个例子,比如我们想要买一瓶水
面向过程:我们需要去超市,…付钱…回家
面向对象:你告诉父母,你想要喝水,然后父母给买回来,至于过程是怎么买的,你不用知道,你只需要提高需求,得到结果。再来一个代码中的例子:怎么求一个数的次方?
你可能for循环…然后一步一步的实现,你需要注重每一步操作
但你也是以直接调用Math.pow(2,3),直接得到结果,中间的过程你可以不用知道,你只需要提供需求,得到结果面向过程:我们是过程的参与者,体现的是执行者
面向对象:讲过程封装,考虑的是对象的行为,比如Math.pow(2,3),我们只需要知道他的行为(结果)是什么,相当于指挥者所以说是万物皆对象,比如人,车子…都有自己的属性和特征;人会呼吸,至于为什么会呼吸,全被封装起来了,你只需要执行,难道每次呼吸还要考虑原理么◕‿-
面向过程
面向过程也是解决问题的一种思想,当我们在解决问题时,会按照预先设定的想法和步骤,一步-步去实现, 而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,完成我们的需求。上述描述的每一 个具体步骤我们都是参与者,并且需要面对具体的每一个步骤和过程, 这就是面向过程最直接的体现。通过上面简单的描述发现,面向过程,其实就是面向着具体的每一个步骤和过程, 就是面对具体的每一个功能函数。 这些功能函数相互调用,完成需求。
面向对象
面向对象当不再面对具体的每一个方法时,发现操作也变的简单了很多。而封装具体功能的这类,是我们需要面对的。而基于这个封装了具体功能的类,那怎么使用呢?当面向封装了具体功能类,若要使用这个类,一 般情况下,在Java中需要通过创建这个类的实体来使用。这个实体称之为对象。在开发中,我们是在不断的找封装不同功能的类。基于这些类,创建其对象,使用这些对象完成相应的操作。通过上面的讲解和分析得出:面向对象是基于面向过程,对象是将功能进行了封装。只要找到了具体的类,创建出对象,就可以调用其中的具体功能。面向对象也是用来解决问题的一种思维模式。在以后开发中,先找对象,调用对象中的具体功能。如果真的没有能够完成需求的对象,这时就自己创建对象,并将所需的功能定义到对象中,方便以后使用。
2、类
就是将一些方法封装在一起,便组成了一个类,当然方法不能随便封装在一个类里;
比如一个人的类,里面会封装,呼吸,说话,走路…,但要是把”飞“封装在人的类里似乎就不太合适。把人的说话封装在狗的类里,都不太合适
3、对象与类
还是比如一个人的类,那么人的类名字叫什么呢,跑步,那跑的多快呢?所以需要实例化一个具体的对象才能执行相应的事情。比如我们通过类,实例化一个张三,张三就可以执行人类中的属性。比如张三的姓名,跑步10Km/h…
如果把,张三、李四、王五…这些人的共同属性(静态特征:属性;动态特征:方法)封装起来便构成了一个人的类
比如这个动物类,在实例化之前只是一个抽象的存在,实例化之后,都有共同的属性,共同的属性有各自的特点
4、类的定义与使用(重点)
格式:
修饰符 class 类名{
属性声明;
方法声明;
}
接下来我们定义一个车的类
public class Car{
//静态特征【属性】
String brand;
int price;
//动态特征
public void appearance(String ap){
System.out.println(ap);
}
public void setBrand(String br){
brand = br;
}
public String getBrand(){
return brand;
}
}
接下来我们实例化一个车
格式:
类名 对象名 = new 类名();
对象名.方法名()
Car myCar = new Car();
myCar.appearance("白色");
mycar.setBrand("大众");
System.out.println(getBrand());
通过这个例子应该有点感觉了,把所有操作封装起来,我们以后使用,只需要调用即可。这个是一个简单的例子,但如果一项操作很复杂比如线性表就是将很多操作封装起来,以后使用直接调用即可,这样面向对象是不是便捷了很多。
这样也理解了类的抽象的概念,对象是具体的。
接下来了解一下几个名词
成员变量:定义在类中的变量
成员方法:定义在类中的方法
局部变量:定义在方法体,或者代码块中的变量(比如在一个大括号中定义一个变量,在大括号外是使用不了的)
静态成员变量:static修饰,类中定义表示改变了是所有对象共用一个值
成员变量 | 局部变量 | |
---|---|---|
声明的位置 | 直接定义在类中 | 方法形参或内部、代码块、构造方法中等 |
修饰符 | 访问修饰符,static、final | 不能用访问修饰符、不能用static,可以使用final |
初始化值 | 有默认值 | 没有默认初始化值,必须赋值才能使用 |
内存加载的位置 | 堆空间或静态区域(new出来的) | 栈(之前的数组便是在堆中开辟的,所以有初始化值) |
//举个例子了解一下这些名词
public class Demo {
//成员变量
public int age;
public static int height;//静态成员变量
public final int weight=7;//成员常量
}
//成员方法
public void f(){
//局部变量
int a;
//public int a;//报错
//public static int a;//报错
final int b=3;//局部常量
System.out.println(age);//输出0
//System.out.println(a);//报错
}
这章概念性的知识点比较啰嗦,主要是了解面向对象和面向过程,接下来主要会用代码举例来讲解知识点