java如何實現多繼承
阿新 • • 發佈:2018-12-26
在java中,原則上是不允許多繼承的,也就是類與類之間只可以單繼承。
那麼,有沒有辦法,可以在不使用介面的情況下實現多繼承呢? 答案是可以。
使用內部類就可以多繼承,嚴格來說,還不是實現多繼承,但是這種方法可以實現多繼承所需的功能,所以把它稱為實現了多繼承。
下面就舉個例子:
假如有一個打電話類Call,裡面實現了一個可以打電話的功能的方法callSomebody(String phoneNum);
一個發信息類SendMessage,裡面實現了一個可以發信息功能的方法sendToSomebody(String phoneNum);
還有一個手機類Phone,這個手機類想實現打電話和發信息的功能;我們知道可以用繼承來獲得父類的方法,但是隻可以單繼承呀,也就是說只可以實現其中一個類裡面的方法,這並不滿足我們的需求。
接下來,我們就使用內部類,達到我們所需的目標了。
class Call {
public void callSomebody(String phoneNum){
System.out.println("我在打電話喔,呼叫的號碼是:" + phoneNum);
}
}
class SendMessage {
public void sendToSomebody(String phoneNum){
System.out.println("我在發簡訊喔,傳送給 :" + 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"); } }
這樣就實現了callSomebody(String phoneNum) 和sendToSomebody(String phoneNum)這兩個方法的功能呢。