此声明是否有效?
int obj=new someMethod();
此外,我想知道当我们使用不同的引用和构造函数创建对象时它会产生什么差异,如下所示:
Object obj=new otherObject();
我的意思是它与
有什么不同Object obj=new Object();
'someMethod'是另一个类'someMethod'的构造函数,'otherObject'也是类'otherObject'的构造函数。对象是一个类。
答案 0 :(得分:2)
大胆猜测someMethod
是一个类的方法,例如:
int someMethod() {
// Code here
}
... otherObject
是一个类的实例,然后是,这些语句都没有效。
在Java中,new
关键字用于创建类的实例。类不是方法,也不是对象。
声明:
Object obj = new Object();
有效且有效,因为Object
是一个类。
现在,当然,如果otherObject
是类:
class otherObject {
// Methods and such here
}
...然后Object obj = new otherObject();
是一个有效的语句,因为所有类都派生自Object
,因此可以将otherObject
实例分配给声明为Object
的变量。请注意,在Java中,压倒性的约定是使用最初限制的CamelCase用于类名(因此,OtherObject
而不是otherObject
)。
我建议退一步阅读一些不错的Java入门教程,这些教程将解释类,实例,方法等。
答案 1 :(得分:1)
int obj = new someMethod();无效。 int是数据类型,而不是类。你不能从int继承,所以someMethod永远不会是int类/对象。
如果someMethod是一种方法(顾名思义:),你可以拥有
int intObj = someMethod();
如果someMethod返回并且int如此:
int someMethod()
{
return 5;
}
baseObject obj = new otherObject();表示'otherObject'类继承自'baseObject'。例如,如果你有一个Animal类,那么像Dog这样的类可以继承它,这样你就可以拥有
Animal spot = new Dog();
但你不能拥有
Dog spot = new Animal();
这是一个解释java继承的链接:http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
由于所有类都继承自Object,Object obj = new OtherObject();是有效的
答案 2 :(得分:0)
int obj=new someMethod();
无效,因为在创建任何类的对象时,无法为其指定基本数据类型。
Object obj=new otherObject();
是有效的,因为类的对象可以分配给它自己的类型或者它的超类,而Object
类是所有类的超类。