是否可以在不使用继承的情况下将一个类分配为另一个类[重复]

问题描述 投票:0回答:1

在我的程序中,我使用 A 类的实例来执行各种操作。现在,我需要将系统某些部分的类 A 替换为类 B。类 B 是类 A 的扩展,但不能如此标记,因为这两个类的继承链都是这样设置的,我无法更改它。

是否可以以如下代码的方式设置 B 类(或 A 类):

ClassB ParamB = new ClassB(someParams);
ClassA ParamA = ParamB; 

不会抛出错误,而是将适当的值分配给 ParamA,而不需要显式转换?如果不可能,是否可以通过显式强制转换来实现?

java class casting variable-assignment
1个回答
0
投票

这是不可能的。相反,创建一个

interface C
abstract class C
来声明所需的所有通用能力,如果您有两者共享的一些实现,那么您也可以定义/实现它们(那么它将是一个
abstract class
).

因此,

A
B
将实现
C
,并且您需要对此保持不可知的地方,请使用
C

此外,如果您有一些 A -> B 和 B -> A 转换器方法,也不会造成伤害。

© www.soinside.com 2019 - 2024. All rights reserved.