ការបន្តថ្នាក់ (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}`)