类: 实例化对象 父类 子类 超类 基类 继承
/*
类
实例化属性和方法 在实例化对象中会全部拥有
静态属性和方法 在实例化对象中是不存在。只属于类本身
Array
实例化属性和方法
push
pop
shift
unshift
静态属性和方法
isArray
from
类是实例化对象的抽象表现
实例化对象是类的具象化表现
类和类之间才有继承
超类:子类的父类叫做超类
superClass 超类
基类 基础类别
Object就是基类
*/
类的例子
class 人类{
//全局变量
脚=2;
手=2;
头=1;
鼻子=1;
姓名="";
年龄=0;
性别="";
// static 静态 静态属性一旦创建不需要实例化在任何地方都可以调用,存储数据
static history=5000;
// 每个类中都有一个constructor,这个函数叫做构造函数
// 可以理解为这个类当要实例化对象时,就会先执行这个构造函数,可以理解为初
始化执行
constructor(name,age,sex){
// 当需要调用当前类中的属性和方法时,需要使用this
// 这里的this指向实例化的对象-->小明(小明包含所有的全局变量)
this.姓名=name
this.年龄=age;
this.性别=sex;
}
编程(){
// this指的是实例化对象 谁调用该方法,this指向谁
console.log(this.姓名+"会编程")
}
做饭(){
console.log(this.姓名+"开始做饭")
}
static 蒸汽大发展(){
// 静态方法中也可以使用this,这个this指的是当前类名(人类)
console.log("人类开始蒸汽时代")
}
static 二战(){
console.log("人类开始第二次世界大战")
}
}
实例化对象创建 new 类名() 当new 类名()时会执行constructor函数,
类名后面的()带入的参数将会传入到constructor函数里
var 小明=new 人类("王小明",21,"男");
小明这个对象有了 脚\手\头\鼻子\姓名\年龄这些属性 还有编程和做饭的方法
console.log(小明)
console.log(小明.姓名)
console.log(小明.性别)
小明.做饭();
小明.编程();
var 小雪=new 人类("李雪",22,"女");
console.log( 小雪.姓名)
console.log(小雪.年龄)
小雪.做饭();
小雪.编程();
静态属性和方法都需要使用类名调用
console.log(人类.history)
人类.二战();
人类.蒸汽大发展();
类继承
class 女人 extends 人类{
// 人类的中所有属性和方法都会被女人继承
constructor(name,age){
// 执行超类的构造函数 执行超类(人类的构造函数),并且传参进入
// 超类构造函数里的this将会指向当前实例化女人类的对象--》小雪
super(name,age,"女");
}
// 这个方法在父类中没有的,所以这个方法属于女人这个类别新增的
化妆(){
console.log(this.姓名+"开始化妆")
}
做饭(){
// console.log(this.姓名+"开始做饭")
// 先执行超类的做饭方法
// super指超类的某个方法
super.做饭();
console.log(this.姓名+"做汤")
}
}
var 小雪=new 女人("王晓雪",21);
小雪.化妆();
小雪.做饭();
console.log(小雪)