对于不同的编程语言,我们都有一系列的概念、原则和规定。这些概念、原则和规定就被称为编程范式。
1.1 命令式编程
命令式编程:用语句改变程序的状态。
这个概念出现在运算的开始,并且与计算机的内部结构紧密相连。“命令”这个名词,顾名思义,指令的执行即是程序的运行。
示例:
和朋友约好吃饭,你可以试着用“命令式”的方式告诉他如果到达
(1)先做地铁到18号线;
(2)从18号线转地铁到16号线;
(3)16号线XX站下车右拐第几个路口的XXX火锅店。
1.2面向对象编程
面向对象编程经常与命令式编程联系在一起,在实践当中,两者是可以共存的。Java就是这种协作的生动证明。
对象和类
对象是面向对象编程(OOP)语言的主要元素,它包括状态和行为。
如果我们将类视为模板,则对象是模板的实现。
例如,我们可以把汽车视为一个类。那么一辆特定品牌的汽车,就是汽车类的一个对象。
这辆特定品牌的汽车可以满足汽车类所具备的所有属性和行为,比如有引擎、方向盘、车灯等,还能前进、倒退等。
面向对象基于四个基本原则:
- 封装
- 抽象
- 继承
- 多态
封装
封装主要是指属性和行为的绑定。封装的思路是将对象的属性和行为保存在一个地方,以便于维护和扩展。封装还提供了一种隐藏用户所不需要的细节的机制。
封装是面向对象语言的基本原则之一。封装有助于不同模块的分离,使得开发人员可以或多或少地独立开发和维护解耦模块。
抽象
抽象提供了一种机制,这种机制使得对象可以公开它所做的事情,而隐藏它是如何做到这些事情的。
比如我们驾驶一辆汽车,我们只需要知道它暴露给我们的数据和行为,
数据展示在仪表盘上,行为就是我们可以控制设备来驾驶汽车。
而我们并不需要知道汽车的引擎是根据什么原理跑起来的。
继承
继承是指对象或类基于另一个对象或类的能力。
被继承的类叫父类或者基类,它为实体可以提供顶级行为。这种可以结合现实去理解,比如一个人只有一个亲生父亲。同时Java的继承属于单继承多实现。
例如:Vehicle属于一个基类,Car、Truck、Bike等可以继承Vehicle类并添加给定的属性和行为。
public class Vehicle{
protected String name;
public Vehicle(String name){
this.name = name;
}
}
现在创建一个Car类继承Vehicle类 子类可以使用父类protected 和 public 的所有属性和方法。
public class Car extends Vehicle{
public Car(String name){
super(name);
}
}
多态
多态为我们提供了让不同类型的实体使用相同的接口的选项。
主要有两种类型的多态:编译时多态和运行时多态。编译器可以根据调用参数的数量来决定调用哪个方法,这就是编译时多态。编译器无法决定最终是执行子类的实现还是父类的实现,只能在运行时决定,这就是运行时多态。
运行时多态(有时也称为子类型多态)在子类继承父类并覆盖其方法时起作用。有些技术人员认为,只有运行时多态才是真正的多态。
为了详细说明,下面把上面写的代码实例添加方法进行处理
public String toString(){
return "Vehicle:" + name;
}
子类Car中重写相同的方法
public String toString(){
return "Car:" + name;
}
现在我们可以看到行为中的子类型多态。创建一个Vehicle对象和一个Car对象,将每个对象声明为Vehicle变量类型。然后我们为每个对象调用toString方法。vehicle是Vehicle类的一个实例,它将调用Vehicle.toString()方法。vehicle2是Car类的一个实例,它将调用Car类的toString()方法。
Vehicle vehicle = new Vehicle("A Vehicle");
Vehicle vehicle2 = new Car("A Car");
System.out.println(vehicle.toString());
System.out.println(vehicle2.toString());
最后运行结果:
本文的内容到此就结束了,希望大家多多批评指正。