java关于多继承和单继承

面试官说: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)这两个方法的功能呢。

  • 优点:包装了内部类,实现了多继承。
  • 不足:此类为内部类的包装,一般在公司不太适用,不能满足大多数开发需求,毕竟创建的一个类里有多个类。

你可能感兴趣的:(java,多继承,内部类)