java語言可以通過什么實(shí)現(xiàn)多繼承?
在java中,原則上是不允許多繼承的,也就是類與類之間只可以單繼承。
那么,有沒有辦法,可以在不使用接口的情況下實(shí)現(xiàn)多繼承呢? 答案是可以。
使用內(nèi)部類就可以多繼承,嚴(yán)格來說,還不是實(shí)現(xiàn)多繼承,但是這種方法可以實(shí)現(xiàn)多繼承所需的功能,所以把它稱為實(shí)現(xiàn)了多繼承。
下面就舉個(gè)例子:
假如有一個(gè)打電話類Call,里面實(shí)現(xiàn)了一個(gè)可以打電話的功能的方法callSomebody(String phoneNum);
一個(gè)發(fā)信息類SendMessage,里面實(shí)現(xiàn)了一個(gè)可以發(fā)信息功能的方法sendToSomebody(String phoneNum);
還有一個(gè)手機(jī)類Phone,這個(gè)手機(jī)類想實(shí)現(xiàn)打電話和發(fā)信息的功能;我們知道可以用繼承來獲得父類的方法,但是只可以單繼承呀,也就是說只可以實(shí)現(xiàn)其中一個(gè)類里面的方法,這并不滿足我們的需求。
接下來,我們就使用內(nèi)部類,達(dá)到我們所需的目標(biāo)了。
class Call {
public void callSomebody(String phoneNum){
System.out.println("我在打電話喔,呼叫的號(hào)碼是:" + phoneNum);
}
}
class SendMessage {
public void sendToSomebody(String phoneNum){
System.out.println("我在發(fā)短信喔,發(fā)送給 :" + phoneNum);
}
}
public class Phone {
private class MyCall extends Call{
}
private class MySendMessage extends SendMessage{
}
private MyCall call = new MyCall();
private MySendMessage send = new MySendMessage();
public void phoneCall(String phoneNum){
call.callSomebody(phoneNum);
}
public void phoneSend(String phoneNum){
send.sendToSomebody(phoneNum);
}
public static void main(String[] args) {
Phone phone = new Phone();
phone.phoneCall("110");
phone.phoneSend("119");
}
}
這樣就實(shí)現(xiàn)了callSomebody(String phoneNum) 和sendToSomebody(String phoneNum)這兩個(gè)方法的功能呢。