ការបន្តថ្នាក់ (inheritance) គឺជាការបង្កើតថ្នាក់មួយបន្តភ្ជាប់ទៅនឹងថ្នាក់ផ្សេងៗទៀត។ ដើម្បីបង្កើតថ្នាក់មួយបន្តភ្ជាប់ទៅនឹងថ្នាក់ផ្សេងៗទៀត យើងត្រូវធ្វើដូចខាងក្រោមនេះ៖
//ការបង្កើតថ្នាក់ឈ្មោះ ThreeD
class ThreeD{
constructor(){
this.pi = 3.14
}
getObjectVolume(){
console.log(`volume`)
}
}
//ការបង្កើតថ្នាក់មួយទៀតឈ្មោះ Cube បន្តចេញពីថ្នាក់ ThreeD
class Cube extends ThreeD{
constructor(width,height,depth){
this.width = width
this.height = height
this.depth = depth
}
getCubeVolume(){
this.volume = this.width * this.height * this.depth
onsole.log(`The volume of cube is ${this.volume}`)
}
}
ផលប្រយោជន៍នៃការបន្តថ្នាក់គឺថា តាមរយៈសិស្សនៃថ្នាក់រង យើងអាចយកសម្បត្តិទាំងអស់ ដែលមាននៅក្នុងថ្នាក់រងនិងថ្នាក់មេ មកប្រើប្រាស់បានតាមសេចក្តីត្រូវការ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
//ការបង្កើតថ្នាក់ឈ្មោះ ThreeD
class ThreeD{
constructor(){
this.pi = 3.14
}
getObjectVolume(){
console.log(`volume`)
}
}
//ការបង្កើតថ្នាក់មួយទៀតឈ្មោះ Cube បន្តចេញពីថ្នាក់ ThreeD
class Cube extends ThreeD{
constructor(width,height,depth){
super()
this.width = width
this.height = height
this.depth = depth
}
getCubeVolume(){
this.volume = this.width * this.height * this.depth
console.log(`The volume of cube is ${this.volume}`)
}
}
let cubeInstance = new Cube(25, 10, 5)
cubeInstance.getCubeVolume()
//ការយកវិធីក្នុងថ្នាក់មេមកប្រើ
cubeInstance.getObjectVolume()
សរុបមក នៅពេលដែលសម្បត្តិណាមួយ ត្រូវបានយកមកប្រើតាមរយៈសិស្សណាមួយ ការស្វែងរកវិធីនិងឬអថេរទាំងនោះត្រូវធ្វើឡើងនៅក្នុងសិស្សនោះមុន រួចបានឡើងទៅថ្នាក់របស់សិស្សនោះ រួចបានទៅថ្នាក់មេរបស់នៃថ្នាក់សិស្សនោះ បើសិនជាមាន។
នៅក្នុងការបន្តថ្នាក់ យើងអាចយកថ្នាក់មកបន្តគ្មា មានចំនួនប៉ុន្មានក៏បានដែរ។ ពោលគឺយើងអាចបង្កើតថ្នាក់មួយដោយបន្តភ្ជាប់ទៅនឹងថ្នាក់មួយទៀត ដែលត្រូវបានបន្តភ្ជាប់ទៅនឹងថ្នាក់មួយទៀត ដែលត្រូវបានបន្តភ្ជាប់ទៅនឹងថ្នាក់មួយទៀត…
ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
//ការបង្កើតថ្នាក់ឈ្មោះ ThreeD
class ThreeD{
constructor(){
this.pi = 3.14
}
getObjectVolume(){
console.log(`volume`)
}
}
//ការបង្កើតថ្នាក់មួយទៀតឈ្មោះ Cube បន្តចេញពីថ្នាក់ ThreeD
class Cube extends ThreeD{
constructor(width,height,depth){
this.width = width
this.height = height
this.depth = depth
}
getCubeVolume(){
this.volume = this.width * this.height * this.depth
console.log(`The volume of cube is ${this.volume}`)
}
}
//ការបង្កើតថ្នាក់មួយទៀតឈ្មោះ Box បន្តចេញពីថ្នាក់ Cube
class Box extends Cube{
constructor(width, height, depth){
this.width = width
this.height = height
this.depth = depth
}
getBoxVolume(){
this.volume = this.width * this.height * this.depth
console.log(`The volume of box is ${this.volume}`)
}
}
ក្នុងករណីមានថ្នាក់ជាច្រើនតភ្ជាប់គ្នាពីមួយទៅមួយ នៅពេលដែលសម្បត្តិណាមួយត្រូវបានយកមកប្រើតាមរយៈសិស្សនៃថ្នាក់ណាមួយ ការស្វែងរកសម្បត្តិនោះ ត្រូវធ្វើឡើងជាដំបូងនៅក្នុងសិស្សនោះជាមុនសិន រួចបានឡើងទៅថ្នាក់របស់សិស្សនោះ រួចបានឡើងទៅថ្នាក់មេរបស់សិស្សនោះជាបន្តបន្ទាប់រហូតសម្បត្តិត្រូវបានរកឃើញ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
//ការបង្កើតថ្នាក់ឈ្មោះ ThreeD
class ThreeD{
constructor(){
this.pi = 3.14
}
getObjectVolume(){
console.log(`volume`)
}
}
//ការបង្កើតថ្នាក់មួយទៀតឈ្មោះ Cube បន្តចេញពីថ្នាក់ ThreeD
class Cube extends ThreeD{
constructor(width,height,depth){
super()
this.cwidth = width
this.cheight = height
this.cdepth = depth
}
getCubeVolume(){
this.volume = this.cwidth * this.cheight * this.cdepth
console.log(`The volume of cube is ${this.volume}`)
}
}
//ការបង្កើតថ្នាក់មួយទៀតឈ្មោះ Box បន្តចេញពីថ្នាក់ Cube
class Box extends Cube{
constructor(width, height, depth){
super(30,15,10)
this.bwidth = width
this.bheight = height
this.bdepth = depth
}
getBoxVolume(){
this.volume = this.bwidth * this.bheight * this.bdepth
console.log(`The volume of box is ${this.volume}`)
}
}
let boxInstance = new Box(25, 10, 5)
boxInstance.getBoxVolume()
boxInstance.getCubeVolume()
console.log(`The value of pi is ${boxInstance.pi}`)