面向对象

为什么学习面向对象?
我真的不知道!
1.面向对象 编程:采用面向对象的思想来编写程序
找对象
2.面向过程 编程: 意思采用面向过程的思想来编写程序
按步骤解决问题: 1,2,3...
3.面向对象 编程思想: 万物皆对象
(1)找对象
(2)实现对象

创建对象的方式

  1. 构造函数
(1)格式:
        function Cat(参数列表) {
            this.name     // this 代表new出来的对象

            this.miaow = function() {}
        }

        new Cat(参数列表)  // 代表创建对象
 (2)原型函数:
      每个构造函数中都存在 1个隐藏的对象,名字是 prototype,  原型
       原型对象   是被所有实例对象 公用的!是唯一的
   总结:  找原型对象有2个办法:
                1.  构造函数名.prototype
                2.  对象名.__proto__   (chrome浏览器才可以使用)
  1. 函数创建的形式(工厂模式)
        function create() {
            var obj = {}

            return obj;
        }

3.面向对象编程的特点:

    1. 封装(属性 和 行为 都捆绑在一起)
        
        函数: 把代码捆在一起

        优点:
            (1) 重复利用
            (2) 便于管理,代码更加清晰
2.继承
   为了让子类继承父类的属性(也包括方法),首先需要定义一个构造函数。
然后,将父类的新实例赋值给构造函数的原型.
例如:
    创建三种动物 对象如下:
    1. 猫       4条腿               喵喵叫
    2. 加菲猫   4条腿,1对蓝眼睛    喵喵叫、讲笑话
    3. Tom猫    4条腿,蓝色毛发     喵喵叫、讲笑话、抓老鼠


  代码
function TomCat() {
    this.color = "蓝色毛发";
}
// 继承
TomCat.prototype = new Cat();
TomCat.prototype.joke = function() {
    console.log("讲笑话。哈哈哈");
}
TomCat.prototype.catchmouse = function() {
    console.log("抓老鼠");
}
function JFCat() {
    this.eye = "蓝眼睛"
    
}
//    注意 顺序,先继承,再增加!
// 继承猫
JFCat.prototype = new Cat();
// 增加了讲笑话的方法
JFCat.prototype.joke = function() {
    console.log("讲笑话")
}
function Cat() {
    this.legs = 4; // 增加属性 腿
}
// 对于对象中 方法/行为/动作/函数  一般建议放在 原型 中!
// 将方法 放到原型对象中,这样节省空间,更好些!
Cat.prototype.miaow = function() {
    console.log("喵喵喵~")
}
// 调用
var cat1 = new Cat();
cat1.miaow();
 3.多态:
字面意思多种状态,在面向对象语言中,接口的多种不同的实现方式即为多态。

你可能感兴趣的:(面向对象)