在Java问题中创建对象

时间:2010-02-28 08:52:06

标签: java

在PHP中,要创建一个新对象,你可以这样做$dog = new Dog;。但在Java中,您可以执行类似Dog x = new Dog;Dog x;的操作。有人可以解释为什么你需要在变量前面说出Dog类吗?

6 个答案:

答案 0 :(得分:6)

您需要确定类型,因为Java是静态类型的语言。

如果您将x声明为 Dog ,则它只能是 Dog Dog 的子类。

另一个例子:

public class Animal {
}

public class Dog extends Animal {
}

public class Cat extends Animal {
}

以下代码有效,因为x被声明为动物,它可以是 Cat ,或者动物的任何子类:

Animal x;
x = new Dog();
x = new Cat();

答案 1 :(得分:5)

Java静态和显式键入。

由于继承,变量的类型可能与它所拥有的值的类型不同。例如:

Animal dog = new Dog();

此处dog 变量的类型为Animal,但其保留的值是对Dog实例的引用。

现在在其他一些语言中(C#3作为Java的近邻作为显而易见的示例),当您确实希望局部变量的类型相同时,可以使用隐式类型的局部变量作为用于初始化它的表达式的类型:

var dog = new Dog(); // Equivalent to Dog dog = new Dog();

(其他一些静态类型语言的类型推断功能远不止于此。)

所以,回到原来的问题,答案是:

  • dog变量的类型在编译时是已知的;在PHP
  • 中不是这样
  • 必须在Java中明确声明变量的类型;这与静态类型有关,但不是静态类型的要求

答案 2 :(得分:1)

在Java中,您可以像这样调用构造函数(如果它没有参数):

Dog x = new Dog();

通过在变量前面编写类名,可以告诉Java您的变量x的类型为Dog。这允许Java在写作时发现你做错了什么:

Dog x = new Cat();

请参阅PHP Variables at w3schools

  

PHP是一种松散类型的语言

     

在PHP中,不需要变量   在向其添加值之前声明。

     

在上面的例子中,你看到了你   不必告诉PHP哪些数据   输入变量是。

     

PHP会自动转换   变量到正确的数据类型,   取决于它的价值。

     

在强类型编程中   语言,你必须声明(定义)   变量的类型和名称   在使用之前。

     

在PHP中,声明了变量   使用时自动。

答案 3 :(得分:0)

我认为这是因为Java是严格打字的。您需要在编译时放置对象的类型。

答案 4 :(得分:0)

用于创建类对象的java语法,也称为创建实例。

例如,Dog adog; 其中adogDog类型的引用变量。

Dog adog=new Dog();其中adogDog类型的引用变量,现在引用内存中的Dog对象。

并使用点(。)运算符来访问对象的实例变量和方法。

答案 5 :(得分:0)

您的班级名称对象名称=新班级名称();  例如

class Animal(){

//你的代码 }

动物狗=新动物();