ES: Comment comprenez-vous la création et l'héritage des classes? Continuons à raconter l'histoire ~

Racontez des connaissances intéressantes dans vos propres mots.


Salut à tous, je le suis 梅巴哥er. Cet article utilise la forme de narration pour parler des connaissances liées à la classe afin d'approfondir la mémoire. J'espère que ça t'as aidé.


Présentez d'abord les concepts associés:

  • Qu'est-ce qu'une classe?

    • La classe classe est un nouveau concept dans ES6
    • Une classe fait abstraction de la partie publique d'un objet et fait référence à un exemple en général.
    • Par exemple, les célébrités sont une catégorie de personnes (une grande catégorie), et Di Lieba, qui est une célébrité, en est l'objet. L'objet est un concept concret.
    • Les attributs et méthodes communs de la classe doivent être utilisés avec ce
  • Création de classe

class Star {
    
    
	...
}
// 用class创建
// 类名首字母大写
// 类名后不跟()
  • Héritage de classe
class Father{
    
    
    ...
}

class Son extends Father {
    
    
    ...
}
// 子类继承了父类的属性和方法
// 子类也是类
  • Instanciation de la classe
class Star {
    
    
    ...
}

var dili = new Star()
// 用new对类实例化
// 实例化的对象可以调用类的属性和方法
  • Constructeur de classe
class Star {
    
    
    constructor(name, age) {
    
    
        this.name = name 
        this.age = age
    }
}

var dili = new Star('迪丽热巴', 18)
console.log(dili.name + dili.age + '岁了!')
// 输出 迪丽热巴18岁了!
// 每个类都有一个constructor()构造函数
// 创建类的时候会自动生成constructor,写不写都会有
// 类的参数放在constructor里,类的实例可以直接拿去用
// constructor里面的this指向实例对象,方法里面的this指向这个方法的调用者。
  • Super fonction de classe
class Father {
    
    
    constructor(x, y) {
    
    
        this.x = x 
        this.y = y 
    }
    sum() {
    
    
        return this.x + this.y
    }
}
class Son extends Father {
    
    
    sum() {
    
    
        // return 4  // 输出4
        return super.sum() // 输出3
    }
}

var son = new Son(1, 2)
console.log(son.sum())
// super作用是调用父类
// super.sum()相当于Father.sum()
// 调用的规则是:
// 如果子类中有自己的方法,则输出子类自身方法的结果
// 如果子类没有自己的方法,则输出父类方法的结果

N'est-ce pas idiot de voir? Ce n'est pas grave, regardons une histoire courte.


Le réalisateur a prévu de faire un film et a commencé à chercher des stars.

class Star{
    
    

}

Les stars qui souhaitent auditionner doivent remplir leurs propres informations, telles que leur nom, leur âge, leur expérience de chant ou d'acteur.

class Star {
    
    
    constructor(name ,age, film) {
    
    
        this.name = name
        this.age = age 
        this.film = film
    }
    sing(song) {
    
    
        return '会唱的歌曲:' + song 
    }
    show() {
    
    
        return '参演的影视剧:' + this.film 
    }
}
// 注意看sing和show方法的参数
// 俩方法的参数放置不一样,用法也不一样
// 因为this指向是不同的
// 参数放在constructor里,this指向的就是实例对象
// 也就是当用new来实例化的时候,这个参数要带上
// 而参数放在方法里,this是指向调用者的,
// 调用的时候再加上实参即可

Un jour, Di Lieba a vu cette publicité pour chercher une star pour faire un drame, alors il a rempli les informations et a soumis une candidature.

// 对类进行实例化
var dili = new Star('迪丽热巴', 18, '好孩子')
console.log(dili.sing('难忘今宵'))
console.log(dili.show())
// 信息:我叫迪丽热巴,18岁,演过好孩子,会唱难忘今宵
// 注意看,sing方法是调用的时候输入参数的,不在实例对象里
// show方法是在实例化的时候加的参数
console.log(dili)
// 输出:Star { name: '迪丽热巴', age: 18, film: '好孩子' }
// 这里面没有唱歌的参数。

Le réalisateur était très satisfait de Di Lieba, alors il lui a demandé une interview. Alors demandez-lui, que feriez-vous d'autre?

class Star {
    
    
    constructor(name ,age, film) {
    
    
        this.name = name
        this.age = age 
        this.film = film
    }
    sing(song) {
    
    
        return '会唱的歌曲:' + song 
    }
    show() {
    
    
        return '参演的影视剧:' + this.film 
    }
}
// 继承Star类
class Dili extends Star {
    
    
	// 需要在构造器里写上父类的参数
	// 如果子类也需要用到参数,也写进构造器里
    constructor(name ,age, film,sl, da) {
    
    
    	// super用来调用父类的构造函数时
    	// 必须写在this之前
    	// 如果父类里有参数,super里也要带上父类的参数
        super(name ,age, film)
        this.sl = sl 
        this.da = da
    }
    sleep() {
    
    
        return this.sl 
    }
    dance() {
    
    
        return this.da
    }
}
var dili = new Dili('迪丽热巴', 18, '好孩子', '睡懒觉', '跳舞啊')
console.log(dili)
// 输出:Dili { name: '迪丽热巴', age: 18, 
// film: '好孩子', sl: '睡懒觉', da: '跳舞啊' }

Dili a dit que je pouvais encore dormir et danser.

Le réalisateur s'est senti très satisfait, alors il s'est arrangé pour qu'il auditionne pour le plan de dormir tard.


ce qui précède.

Je suppose que tu aimes

Origine blog.csdn.net/tuzi007a/article/details/114381815
conseillé
Classement