Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่างการสืบทอด (Inheritance) และการประกอบ (Composition) ใน Java

Composition (การประกอบ) เป็นเทคนิคการออกแบบที่คลาสของคุณสามารถมีอินสแตนซ์ของอีกคลาสหนึ่งเป็นฟิลด์ของคลาสคุณ Inheritance (การสืบทอด) เป็นกลไกที่ออบเจ็กต์หนึ่งสามารถได้รับคุณสมบัติและพฤติกรรมของออบเจ็กต์พาเรนท์โดยการขยายคลาส

Composition และ Inheritance ให้การนำโค้ดกลับมาใช้ใหม่ (code reusability) โดยการเชื่อมโยงคลาส เรายังสามารถได้ฟังก์ชันการทำงานของ inheritance เมื่อใช้ composition ความแตกต่างดังต่อไปนี้

ลำดับหัวข้อInheritanceComposition
1พื้นฐานInheritance เป็นความสัมพันธ์ "is-a"Composition เป็นความสัมพันธ์ "has-a"
2การนำโค้ดกลับมาใช้ (Code Reuse)ใน Inheritance คลาสสามารถขยายอินเทอร์เฟซเดียวได้ จึงนำโค้ดกลับมาใช้ในคลาสเดียวเท่านั้นนำโค้ดกลับมาใช้ในหลายคลาสได้
3ขอบเขต (Scope)Inheritance ให้คุณสมบัติที่ compile timeComposition บรรลุได้ง่ายที่ runtime
4Finalไม่สามารถนำโค้ดจาก final class กลับมาใช้ได้อนุญาตให้นำโค้ดจาก final classes กลับมาใช้ได้
5เมธอดเปิดเผยเมธอด public และ protected ของพาเรนท์ไม่เปิดเผย โต้ตอบผ่าน public interface

ตัวอย่าง Inheritance

class Animal{ 
    String name = "Orio"; 
} 
class Dog extends Animal{ 
    String type = "Dog"; 
    public static void main(String args[]){ 
        Dog p = new Dog(); 
        System.out.println("Name: " + p.name); 
        System.out.println("Type: " + p.type); 
    } 
}

ตัวอย่าง Composition

public class Student { } 
public class College { 
    private Student student; 
    public College() { 
        this.student = new Student(); 
    } 
}