ES6的面向对象编程以及ES6中的类和对象

一、面向对象

1、面向对象

(1)是一种开发思想,并不是具体的一种技术

(2)一切事物均为对象,在项目中主要是对象的分工协作

2、对象的特征

(1)对象是属性和行为的结合体

(2)属性:体现对象的静态特征、

(3)行为:体现对象的动态特征(具体体现为函数/方法)

3、面向对象的三大特征

(1)封装性:对象时属性和行为的封装体

(2)继承性:在基类(父类)中已经定义的属性或行为,子类可以继承使用

(3)多态性:同一个信息传递给不同的对象呈现的效果也是不同的

二、ES6中的类和对象

1、类:在ES6中引入类的概念,使用class关键字进行定义

class 类名{

        属性

        方法

}

2、ES6中类和对象的关系

(1)类是对象的抽象:类抽取了对象的公共部分

(2)对象是类的实例化:对象是类的具体实例

3、ES6中类的构造函数

使用constructor作为类的构造函数,用于初始化对象。在定义类的时候若没有显式的定义constructor,js会自动生成一个无参的构造函数(constructor(){}) 

 class Student{
    constructor(id,name,age,sex){   //constructor用来初始化对象的属性
        this.id = id,
        this.name = name,
        this.age = age,
        this.sex = sex
    }
    show(){
       console.log(`学号:${this.id} 姓名:${this.name} 年龄:${this.age} 性别:${this.sex}`);
    }
}
let stu1 = new Student('001','小王',20,'男');
console.log(stu1);
stu1.show();

 

 注:通过类创建对象,new 类名([参数])

(1)创建对象时不能显式调用constructor,在new 类名()创建对象时,默认调用了constructor

(2)在定义类时若没有写constructor,则js会自动生成无参的constructor

三、ES6中类的继承

1、基类:被继承的类,也可称为父类或超类

2、子类:由基类派生的类,又称为派生类

3、继承的用法:通过extends关键字实现

class 父类名{

        构造方法

        普通方法

}

class 子类名 extends 父类名{

        构造方法

        普通方法

}

4、super关键字:代表是父类,在类的继承过程中访问父类的构造函数、普通函数

class Father{
    constructor(name,sex){
        this.name= name,
        this.sex = sex
    }
    display(){
        console.log(`姓名:${this.name} 性别:${this.sex}`);
    }
}

class Son extends Father{
    constructor(name,sex,address,phone){
        super(name,sex),
        this.address = address,
        this.phone = phone
    }
    show(){
        console.log(`姓名:${this.name} 性别:${this.sex} 地址:${this.address} 电话:${this.phone}`);
    }
}

let son1 = new Son('小黑','男','西安','13198302930')
son1.show();

5、子类的普通方法与父类的普通方法同名时,子类方法覆盖父类的方法

类中的普通方法又称为实例方法或成员方法

        class Animal{
            eat(food){
                console.log(`${food}`);
            }
            sleep(){
                console.log('在睡觉');
            }
        }
        class Rabbit extends Animal{
            eat(){
                super.eat('兔子吃草')
            }
        }
        class Tiger extends Animal{
            eat(){
                super.eat('老虎吃肉')
            }
        }
        let rabbit = new Rabbit()
        rabbit.eat();
        rabbit.sleep();
        let tiger = new Tiger();
        tiger.eat();
        tiger.sleep();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值