InputStream类和OutputStream类是否都是子类
如果可能的话,我希望能够扩展这两个类。
发布于 2015-05-01 21:01:53
Java不支持多重继承,因此不能扩展多个类。但是,您可以实现多个接口。
对于您想要做的事情,您希望使用组合而不是继承。因此,您的类将有一个InputStream和OutputStream的实例,您可以根据您想要做的事情将行为委托给每个类。
为什么作曲?继承通常是人们接触到的第一件事,尽管他们想要做的是使用父类的行为。对于多重继承,他们通常希望能够访问两个或多个类的行为。例如,您需要一个类C来执行A类所做的事情,而类B does.From类是一个类型透视图,但是继承是一种“是”关系。如果您说的是SubClass extends ParentClass,您是说SubClass本质上是ParentClass类型的,您可以用SubClass替换ParentClass的实例,您的程序在本质上仍然是正确的。这叫做Liskov代换原理。您可以看到,创建一个同时扩展InputStream和OutputStream的类是一个具有两种行为的类,但严格地说不是其中的一个。您很难用类的一个实例来替换这两个实例,并期望事物“正确”地工作。所以你需要想一想你真正想做的事。如果您不关心您想要扩展的类的内部,但您只是想使用它的行为(或以某种方式改变它的行为),那么您可以维护它的内部实例并委托给它,同时对您需要的行为进行任何更改。
因此,在您的情况下,您想要的是访问两个类的I/O行为。因此,您可以只维护内部实例,然后从您的类中提供一个API,该API委托给两个实例上的适当方法。这里的优点是抽象和封装。任何使用您的类及其API的人都不知道它是如何在内部处理I/O的,而且他们也不需要知道;这是一个实现细节。另外,如果您希望在将来更改内部实现,您可以很容易地做到这一点,因为您的类的唯一接口是通过您的公共API。只要您不修改行为并违反API的约定,就可以任意更改内部实现。
发布于 2015-05-01 20:56:06
InputStream和OutputStream都是类(而不是接口)。Java不支持多重继承,因此不可能直接将它们子类。
但是,通过使用组合,您可以将这两个类的行为放在一个类中。
发布于 2015-05-01 20:58:26
作为Java不支持多重继承,这是不可能的。不能在类中同时继承两个类(InputStream和OutputStream)。
https://stackoverflow.com/questions/29995000
复制相似问题