色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java extends和c

Java extends和C的繼承有很多相似之處,但也存在一些不同點(diǎn)。首先,Java是面向?qū)ο蟪绦蛟O(shè)計(jì),而C則是過(guò)程性語(yǔ)言。Java實(shí)現(xiàn)繼承是通過(guò)extends關(guān)鍵字實(shí)現(xiàn)的,而C使用struct結(jié)構(gòu)體實(shí)現(xiàn)繼承。

//C代碼:
struct Animal {
char name[30];
int age;
};
struct Dog {
struct Animal baseInfo;
char type[20];
};

在Java中,一個(gè)類(lèi)只能繼承一個(gè)父類(lèi)。但Java中支持接口(interface)繼承(implements)多個(gè)父接口,使得類(lèi)能夠具有多個(gè)不同的行為(behavior)。而C中,結(jié)構(gòu)體繼承時(shí)只能繼承一個(gè)父結(jié)構(gòu)體。

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中,則需要用到指向父結(jié)構(gòu)體的指針,通過(guò)指針調(diào)用父結(jié)構(gòu)體的成員。

//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的繼承的實(shí)現(xiàn)方式雖然不同,但都能達(dá)到同樣的效果。需要根據(jù)實(shí)際需求選擇合適的繼承方式。