关于内部类!!!!Java编程思想第四版里面有几句话很让人费解啊····

Arousal_Fish 2008-05-21 04:22:39
Java编程思想第四版的204页,中有几句这样的话:
引用
如果没有内部类提供的,可以继承多个具体的或者抽象的类的能力,一些设计与编程问题就很难解决。····
·····。接口解决了部分问题,而内部类有效地实现了“多重继承”。也就是说,内部了允许基础多个非接口类型(译注:类或抽象类)。


这段话的意思不是很明白,开始以为内部类可以多重继承,但实际上不是,有人能解释一下不?谢谢!
...全文
180 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilrxx 2008-05-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yirentianran 的回复:]
我的理解也和楼上的基本相同
可以通过定义多个内部类来达到多继承的效果
[/Quote]
正解,java是单继承的,就是一个类有且仅有一个父类,而一个父类可以有多个之类,但是通过内部类继承不同的父类,可以实现多继承
huxinyu929 2008-05-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 laorer 的回复:]
你可以有多个内部类,每个内部类继承一个类,是不是多重呢,自己的理解
[/Quote]
vincent343425185 2008-05-21
  • 打赏
  • 举报
回复
还有一种就是,如果两个不同抽象类。拥有相同名称的无实现的方法。
这时有一个类要去实现这两个抽象类,此时到底实现的是那个方法呢?
只能用内部类了!
jdlsfl 2008-05-21
  • 打赏
  • 举报
回复
楼上说的正确
刘彬彬 2008-05-21
  • 打赏
  • 举报
回复
内部类的作用:
1.隐藏实现。
2.实现类C++的多重继承(相对用接口实现的多重继承相比,内部类能实现对多个抽象类的多重继承).

Java不支持类的多重继承,但可以使用内部类来继承,实现更多的类。
下面的例子,目标类需要继承两个抽象类(A和B)。目标类C本身继承类A,并使用一个匿名内部类继承另一个类B。
abstract class A {
abstract void methodA();
}

abstract class B {
abstract void methodB();
}

class C extends A {
@Override
void methodA() {
System.out.println("extends A's method");
}

B getB() {
return new B() {
@Override
void methodB() {
System.out.println("extends B's method");
}
};
}
}

public class MultiImplementation {
public void doA(A a) {
a.methodA();
}

public void doB(B b) {
b.methodB();
}

public static void main(String[] args) {
MultiImplementation mi = new MultiImplementation();
C c = new C();
mi.doA(c);
mi.doB(c.getB());
}
}
胡矣 2008-05-21
  • 打赏
  • 举报
回复
我的理解也和楼上的基本相同
可以通过定义多个内部类来达到多继承的效果
yuppy 2008-05-21
  • 打赏
  • 举报
回复
呵呵;每个内部类实现一个不同的继承就OK了;
laorer 2008-05-21
  • 打赏
  • 举报
回复
你可以有多个内部类,每个内部类继承一个类,是不是多重呢,自己的理解

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧