TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
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.定义方法,调用实例化后内部类的方法 这样带橡皮擦的铅笔类就复用了铅笔和橡皮擦类,同时具有了他们的功能,达到了多继承的效果。 有什么不对的地方,欢迎大家指正。 |
|