Java extends和C的繼承有很多相似之處,但也存在一些不同點。首先,Java是面向對象程序設計,而C則是過程性語言。Java實現繼承是通過extends關鍵字實現的,而C使用struct結構體實現繼承。
//C代碼: struct Animal { char name[30]; int age; }; struct Dog { struct Animal baseInfo; char type[20]; };
在Java中,一個類只能繼承一個父類。但Java中支持接口(interface)繼承(implements)多個父接口,使得類能夠具有多個不同的行為(behavior)。而C中,結構體繼承時只能繼承一個父結構體。
Java中:
public interface Animal { public void move(); } public interface Mammal { public void feedMilk(); } public class Dog implements Animal, Mammal { public void move() { System.out.println("Dog is running"); } public void feedMilk() { System.out.println("Dog is feeding milk"); } }
在C中,則需要用到指向父結構體的指針,通過指針調用父結構體的成員。
//C代碼: struct Animal { char name[30]; int age; }; struct Dog { struct Animal* pBaseInfo; char type[20]; }; void feedMilk(struct Animal* pBaseInfo) { printf("%s is feeding milk", pBaseInfo->name); } void feedMilk_Dog(struct Dog* pDog) { feedMilk(pDog->pBaseInfo); }
Java extends和C的繼承的實現方式雖然不同,但都能達到同樣的效果。需要根據實際需求選擇合適的繼承方式。