ES:クラスの作成と継承をどのように理解していますか?話を続けましょう〜

あなた自身の言葉で興味深い知識を教えてください。


みなさん、こんにちは梅巴哥erこの記事では、ストーリーテリングの形式を使用して、クラス関連の知識について話し、記憶を深めます。それがお役に立てば幸いです。


まず、関連する概念を紹介します。

  • クラスとは何ですか?

    • クラスクラスはES6の新しい概念です
    • クラスはオブジェクトのパブリック部分を抽象化し、一般的な例を参照します。
    • たとえば、有名人は人のカテゴリ(大きなカテゴリ)であり、有名人であるDiLiebaがオブジェクトです。オブジェクトは具体的な概念です。
    • クラス内の共通の属性とメソッドは、これで使用する必要があります
  • クラスの作成

class Star {
    
    
	...
}
// 用class创建
// 类名首字母大写
// 类名后不跟()
  • クラス継承
class Father{
    
    
    ...
}

class Son extends Father {
    
    
    ...
}
// 子类继承了父类的属性和方法
// 子类也是类
  • クラスのインスタンス化
class Star {
    
    
    ...
}

var dili = new Star()
// 用new对类实例化
// 实例化的对象可以调用类的属性和方法
  • クラスコンストラクタ
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指向这个方法的调用者。
  • クラススーパー関数
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()
// 调用的规则是:
// 如果子类中有自己的方法,则输出子类自身方法的结果
// 如果子类没有自己的方法,则输出父类方法的结果

見るのはばかげていませんか?それは問題ではありません、短編小説を見てみましょう。


監督は映画を作ることを計画し、星を探し始めました。

class Star{
    
    

}

オーディションを希望するスターは、名前、年齢、歌、演技の経験など、自分の情報を入力する必要があります。

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是指向调用者的,
// 调用的时候再加上实参即可

ある日、ディ・リエバはドラマを作るためのスターを探すためにこの広告を見たので、彼は情報を記入して申請書を提出しました。

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

監督はディ・リエバにとても満足していたので、彼にインタビューを依頼した。それから彼に尋ねてください、あなたは他に何をしますか?

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: '跳舞啊' }

ディリは私がまだ寝て踊ることができると言った。

監督はとても満足していたので、夜更かしのショットのオーディションを受けるように手配しました。


上記。

おすすめ

転載: blog.csdn.net/tuzi007a/article/details/114381815