在PHP中,要创建一个新对象,你可以这样做$dog = new Dog;
。但在Java中,您可以执行类似Dog x = new Dog;
或Dog x;
的操作。有人可以解释为什么你需要在变量前面说出Dog类吗?
答案 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 答案 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;
其中adog
是Dog
类型的引用变量。
Dog adog=new Dog();
其中adog
是Dog
类型的引用变量,现在引用内存中的Dog
对象。
并使用点(。)运算符来访问对象的实例变量和方法。
答案 5 :(得分:0)
您的班级名称对象名称=新班级名称(); 例如
class Animal(){
//你的代码 }
动物狗=新动物();