一、类的作用:可以创建对象、可以实现对象的继承
二、类与对象的关系:类是对象的模板、对象是类的实例化
三、类的创建流程
/*
1、创建类 class 类名 {} 类名的首字母要大写
*/
class Animal {
// 2、构造方法:任何一个类都有一个构造器(构造方法),它是默认的。构造方法中的this指向实例化对象
constructor(name, age) {
this.name = name;
this.age = age;
this.eat = function() {
console.log(`${this.name}会吃饭!`);
}
};
// 4、自定义方法:通过实例化对象进行调用,this指向实例化对象
getName() {
console.log(`${this.name}`);
}
setName(name) {
this.name = name;
};
// 5、静态方法:通过类进行调用,this指向当前的类,this.name就是类名
static sleep() {
console.log("我是一个静态方法");
console.log(this);
console.log(this.name);
}
}
// 3、实例化对象
let dog = new Animal("小狗", 3);
console.log(dog);
console.log(dog.name);
console.log(dog.age);
dog.eat();
let cat = new Animal("小猫", 4);
console.log(cat);
console.log(cat instanceof Object);
console.log(cat.__proto__);
//
// Animal.getName();
dog.getName();
dog.setName("Doggo是真狗");
dog.getName(); //
//
// dog.sleep();
Animal.sleep();
四、类的继承 class 子类 extends 父类 {}
class Dog extends Animal {
constructor(name, age, sex) {
/* this.name = name;
this.age = age; */
super(name, age);
this.sex = sex;
this.playGame = function() {
console.log(`${this.name}`);
}
}
}
let hsq = new Dog("哈士奇", 1, "公的");
console.log(hsq);
console.log(hsq.name);
console.log(hsq.age);
hsq.eat();
console.log(hsq.sex);
hsq.playGame();
hsq.getName();
hsq.setName("金毛");
hsq.getName();
Dog.sleep();
使用super有几个要注意的事项:
子类必须在constructor方法中调用super方法
调用super( ),才可以使用this,否则报错
以上就是关于类继承的介绍,重点在于关键字extends和super,尤其是super的理解和使用,大家需要理解透彻。