什么是面向对象
- 面向对象不是新的东西,它只是过程式代码的一种高度封装,目的在于提高代码的开发效率和可维护性。
- 面向对象编程 —— Object Oriented Programming,简称 OOP ,是一种编程开发思想。
它将真实世界各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成对真实世界的模拟。
在面向对象程序开发思想中,每一个对象都是功能中心,具有明确分工,可以完成接受信息、处理数据、发出信息等任务。
因此,面向对象编程具有灵活、代码可复用、高度模块化等特点,容易维护和开发,比起由一系列函数或指令组成的传统的过程式编程(procedural programming),更适合多人合作的大型软件项目。 - 面向对象与面向过程:
- 面向过程就是亲力亲为,事无巨细,面面俱到,步步紧跟,有条不紊
- 面向对象就是找一个对象,指挥得结果
- 面向对象将执行者转变成指挥者
- 面向对象不是面向过程的替代,而是面向过程的封装
- 面向对象的特性
- 封装性
- 继承性
- 多态性
程序中面向对象的基本体现
我们以一个例子来说明面向过程和面向对象在程序流程上的不同之处。
- 面向过程
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>面向对象介绍</title>
</head>
<body>
<script>
var student1={
name:"小明",
score:550,
}
printScore(student1);
var student2={
name:"小强",
score:660,
}
printScore(student2);
function printScore(student){
console.log("姓名:"+student.name+"\n成绩:"+student.score);
}
</script>
</body>
</html>
- 面向对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>面向对象介绍</title>
</head>
<body>
<script>
var student1=new student("小明",550);
student1.printScore();
var student2=new student("小强",660);
student2.printScore();
function student(name,score){
this.name=name;
this.score=score;
this.printScore=function(){
console.log("姓名:"+this.name+"\n成绩"+this.score);
}
}
</script>
</body>
</html>
Class 是一种抽象概念,比如我们定义Class——Student ,是指学生这个概念,而实例(Instance)则是一个个具体的 Student ,比如, 小明 和 小强 是两个具体的 Student 。
所以,面向对象的设计思想是:
- 抽象出 Class
- 根据 Class 创建 Instance
- 指挥 Instance 得结果