Java对象 - 避免重复代码

The*_*ast 0 java inheritance

所以假设我有两种类型的对象,我不会提前知道将使用哪个对象.我想要应用在特定方法中使用哪个对象来做同样的事情.如何在不重复代码的情况下执行此操作?

例如:

if (input=1){
    version1 version = new version1()
}
else{
    version2 version = new version2()
}

**do something with version**
Run Code Online (Sandbox Code Playgroud)

显然这种方式不会编译,但是我需要做些什么才能完成我想要实现的目标?

也许我必须尝试抓住?抱歉,我还是java新手.

rga*_*ber 13

你可以有一个叫做的超类Version.
Version1Version2 扩展这个超类.

然后你可以这样做:

Version version = null; // superclass reference
if (input == 1){
    version = new Version1(); // instance of subclass Version1
}
else{
    version = new Version2(); // instance of subclass Version2
}
// Now you can use the object version.
Run Code Online (Sandbox Code Playgroud)

这在Java中称为运行时多态 - 使用超类引用指向子类.(因此,您不需要提前知道将使用哪个对象,正如您在问题中提到的:)).

或者,您也可以使用被Interface调用的版本而不是超类版本.在这种情况下Version1,Version2 实现 Version而不是扩展它.

注意:
我建议你阅读Java中的继承多态.
还试着清楚地理解什么是接口,超类等.
这是一个SO链接,它回答了"何时使用超类与接口"的问题.