面试官说:java怎么实现多继承?
答:java不允许,不允许,不允许多继承。
面试官:我就是要实现多继承?
答:好吧,行。
首先要区分一下三个概念:
单继承
多级继承
多继承
1.单继承
java两个类之间可以有继承关系。
在多个类的情况下,一个类作为子类,它的的父类只有一个;同时,一个类作为父类,它的子类有很多个。
2.多级继承
发生在java3个及3个以上的类之间。
a类继承b类,b类继承c类,…
这样成一条长链,a类就可以实现多级继承,可以继承b类、c类、…
3.多继承
多继承在java概念上不允许,但是为了弥补不足,java也有了接口概念,弥补java不能实现多继承的缺陷。
多继承实现的方法有三种:多级继承,实现接口,内部类。
这里不多介绍多级继承和实现一个或多个接口。
- 内部类的介绍地址:
内部类介绍:常用类(一)内部类 - 下面就参考网页的举个例子,已搬到下面:
@rocling的原创博客: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)这两个方法的功能呢。
- 优点:包装了内部类,实现了多继承。
- 不足:此类为内部类的包装,一般在公司不太适用,不能满足大多数开发需求,毕竟创建的一个类里有多个类。