Java 为什么需要编写获取自定义类对象的类型变量?

Java 为什么需要编写获取自定义类对象的类型变量?,java,Java,我不明白这是为什么 例如: class Test { public void someMethod() { } } 然后 Test test = new Test(); 为什么有必要编写变量的类型,所以如果您看到变量分配了自定义类,我认为这是某种溢出编写) ps:这是java,我对它还不熟悉,如果静止是愚蠢的,我很抱歉,但我不明白现在你在声明变量(引用)的类型,与对象的类型不同 e、 g.变量类型可以是Test,也可以是超类型(Object),或者是Test实现的接

我不明白这是为什么

例如:

class Test
{
   public void someMethod()
   {



   }

}
然后

Test test = new Test();
为什么有必要编写变量的类型,所以如果您看到变量分配了自定义类,我认为这是某种溢出编写)


ps:这是java,我对它还不熟悉,如果静止是愚蠢的,我很抱歉,但我不明白现在你在声明变量(引用)的类型,与对象的类型不同

e、 g.变量类型可以是
Test
,也可以是超类型(
Object
),或者是
Test
实现的接口。您选择哪一个取决于您的客户机应该如何引用初始化的对象。e、 g.如果他们知道它是一种特定类型,或者他们只知道它将实现一个给定的接口或功能子集就足够了(或者说是可取的)

更好的例子是:

Animal animal = new Dog();
你的客户端代码只知道它在处理一只动物。i、 它可以(说)调用一个方法
.eat()
,但它不知道
狗吃的东西与
鱼吃的东西不同


请注意,某些语言(例如Scala)将执行类型推断。也就是说,您不必声明变量类型,而是编译器将根据您对变量的后续使用来确定它应该是什么类型。结果代码仍然是静态类型的,但编译器为您做了更多的工作。

您正在声明变量的类型(引用),与对象的类型不同

e、 g.变量类型可以是
Test
,也可以是超类型(
Object
),或者是
Test
实现的接口。您选择哪一个取决于您的客户机应该如何引用初始化的对象。e、 g.如果他们知道它是一种特定类型,或者他们只知道它将实现一个给定的接口或功能子集就足够了(或者说是可取的)

更好的例子是:

Animal animal = new Dog();
你的客户端代码只知道它在处理一只动物。i、 它可以(说)调用一个方法
.eat()
,但它不知道
狗吃的东西与
鱼吃的东西不同


请注意,某些语言(例如Scala)将执行类型推断。也就是说,您不必声明变量类型,而是编译器将根据您对变量的后续使用来确定它应该是什么类型。结果代码仍然是静态类型的,但是编译器为您做了更多的工作。

问题在于声明变量和创建变量实例。第一个
测试
声明变量。通过执行以下操作,无需创建实例即可执行此操作:

Test test;
newtest()
中的第二个
Test
调用变量的构造函数。在本例中,由于您没有创建构造函数,因此使用的是默认的
对象
构造函数。这可以使用先前定义的变量完成,如中所示:

Test test;
test = new Test();
此外,您还可以有多个接受不同参数的构造函数,然后必须指定要使用的构造函数

public class Test {

    public Test(int i) {
    }

    public Test() {
    }
}
那你就可以了

Test test = new Test();
Test test2 = new Test(2);

问题在于声明变量和创建变量实例。第一个
测试
声明变量。通过执行以下操作,无需创建实例即可执行此操作:

Test test;
newtest()
中的第二个
Test
调用变量的构造函数。在本例中,由于您没有创建构造函数,因此使用的是默认的
对象
构造函数。这可以使用先前定义的变量完成,如中所示:

Test test;
test = new Test();
此外,您还可以有多个接受不同参数的构造函数,然后必须指定要使用的构造函数

public class Test {

    public Test(int i) {
    }

    public Test() {
    }
}
那你就可以了

Test test = new Test();
Test test2 = new Test(2);

+ 1,这是真的,但是我认为在C++中, Auto/< Cord>关键字和C++中的代码> var >代码>在<代码> java < />代码中是很好的。如果你看看斯卡拉,你会发现它提供了这样一个工具。例如ValeGeal=新的狗+ 1,这是真的,但是我认为在C++中, +代码> var >代码> V> <代码>在代码< java>代码>中是很好的。如果你看看斯卡拉,你会发现它提供了这样一个工具。e、 g.瓦尔动物=新狗