如何为不同的类使用相同的变量名称

Rec*_*cur 0 java oop

我正在尝试使用变量来实例化不同的类.例如:

Object blah;
class1 ex1;
class2 ex2;

public void test(int i){
    if(i == 1){
        blah = new class1();
    } else {
        blah = new class2();
    }
} 
Run Code Online (Sandbox Code Playgroud)

我将如何在java中执行此操作?

编辑1: 对不起伙计们,让我现在尝试更具体.

假设我有三个类:A,B和C.

A是我的主要用途,并使用B. B使用C.

问题是:

public class B1{
    C instanceC;

    public B1(){
    instanceC = new C();
    //uses a method of instanceC.
    }
}
public class B2{
    C instanceC;

    public C(){
    instanceC = new C();
    //uses a method of instanceC.
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在A:

public class A implements MouseListener{
    Object blah;
    B1 instanceB1;
    B2 instanceB2;

    public void test(int i){
        if(i == 1){
            blah = new B1();
        } else {
            blah = new B2();
        }
    }
//I left the other mouseListener methods blank
    public void mouseReleased(int i){
        blah.instanceC.someMethod();
    }

    public static void main(String[] args) {
        A instanceA = new A();
        A.test(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑2:当我尝试使用instanceC.someMethod()或instanceC.someVariable时,它给我一个空指针异常.

我希望这很清楚.如果它令人困惑,请告诉我,我会看看我是否可以进一步简化它.感谢已经帮助过的人!

T.J*_*der 5

如果blah声明为Object,那将起作用(除了你使用的new是实例而不是类) - 但是使用其上没有的任何方法或属性会很尴尬Object.

通常的方法是通过接口.界面定义了class1和的共同特征class2,然后blah使用界面声明.然后,您可以轻松地将具体类别设置为一个或另一个,并且可以访问共同特征.

例如:

interface Foo {
    void someCommonMethod();
}

class Class1 implements Foo {
    void someCommonMethod() {
        // implementation
    }
}

class Class2 implements Foo {
    void someCommonMethod() {
        // implementation
    }
}

public void test(int i){
    if(i == 1){
        blah = new Class1();
    } else {
        blah = new Class2();
    }

    // ...use `someCommonMethod` on `blah`...
}
Run Code Online (Sandbox Code Playgroud)