java内部类用途之多继承

    技术2022-05-20  32

    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.定义方法,调用实例化后内部类的方法

     

    这样带橡皮擦的铅笔类就复用了铅笔和橡皮擦类,同时具有了他们的功能,达到了多继承的效果。

     

    有什么不对的地方,欢迎大家指正。


    最新回复(0)