java中不允许一个类继承多个父类,但是可以使用java内部类的来达到多继承的效果,同时也避免了多继承中不好的地方。
这里拿一个有橡皮擦功能的铅笔打个比方
铅笔类
public abstract class Pencil { public abstract void write(); }
橡皮擦类
public abstract class Eraser { public abstract void erase(); }
看到上边的类,有人可能会问,没有具体实现的方法,为什么不用接口,这里只是打个比方,正常是应该有具体实现方法的。
现在我们手头有铅笔和橡皮擦类,想做一个带橡皮擦的铅笔类,该怎么办?
我们可以复用上边的两个类,问题出现了,我们不能同时继承这两个类,这个时候就可以用内部类来解决这个问题。
带橡皮擦的铅笔类
public class PencilWithEraser { private MyPencil pencil = new MyPencil(); private MyEraser eraser = new MyEraser(); private class MyPencil extends Pencil { public void write() { System.out.println("Use to write"); } } private class MyEraser extends Eraser { public void erase() { System.out.println("Use to erase"); } } public void write() { pencil.write(); } public void erase() { eraser.erase(); } }
1.使用内部类,分别继承铅笔和橡皮擦
2.分别实例化内部类作为成员变量
3.定义方法,调用实例化后内部类的方法
这样带橡皮擦的铅笔类就复用了铅笔和橡皮擦类,同时具有了他们的功能,达到了多继承的效果。
有什么不对的地方,欢迎大家指正。