我注意到有一种class
(例如:ClassA
)具有变量声明和各种方法的情况。在另一个class
(例如:Class B
)中,有一个方法(MethodofClassB()
),其方法的返回类型为ClassA
。
所以它就像:
Class A
{
variable i,j;
public int MethodA()
{
//some operation
}
}
Class B
{
variable x,y;
public static A MethodB()
{
//some operation
return obj;
}
}
1)我理解MethodB()返回ClassA的对象。 Waty将是返回ClassA对象的用途(意图)
2)将MethodB()定义为Public static的原因是什么。如果静态未用于MethodB()
会发生什么3)返回的objct是什么样的。我的意思是如果我的方法返回一个整数,它将返回一些数字值'123'。如果一个方法返回一个类的对象,那么返回值将是什么。
请通过一个小例子帮助我理解
答案 0 :(得分:4)
1)我理解MethodB()返回ClassA的对象。 Waty将是返回ClassA对象的用途(意图)
取决于该方法的作用,本示例中未说明。如果操作的结果是A
的实例,那么无论A
是什么,它都会返回A
的实例。
例如,如果A
是Car
且B
是CarFactory
,则该方法可能会产生新的Car
。因此它会返回已生成的Car
。
2)将MethodB()定义为Public static的原因是什么。如果静态未用于MethodB()
会发生什么
public
允许其他对象访问它。 static
表示它与B
的特定实例无关。两者都是基于主观的,基于该方法的目的(在该示例中未定义)。成为static
,可以这样称呼:
var newInstance = B.MethodB();
如果不是static
,则需要B
的实例:
var objectB = new B();
var newInstance = objectB.MethodB();
这里有越来越多的含义,包括内存/资源使用和线程安全等内容。所有这些都源于B
的目的和业务逻辑含义以及MethodB
所做的。
3)返回的objct是什么样的。我的意思是如果我的方法返回一个整数,它将返回一些数字值'123'。如果一个方法返回一个类的对象,那么返回值将是什么。
这将是A
的一个实例。与在此处创建实例类似:
var objectA = new A();
此方法还会创建(或以某种方式获取)实例:
var objectA = B.MethodB();
在不了解A
是什么,它的构造函数做什么以及MethodB
做什么的情况下,这两个操作在其他方面是相同的。
答案 1 :(得分:-1)
首先,您的代码不正确。没有“ClassA”课程。类名是A,因此返回类型应为A而不是ClassA。
其次,标准的Java编码标准说用小写字母开始方法和变量。所以,你的例子应该是:
Class A
{
A anA;
B aB;
public int methodA()
{
//some operation
}
}
Class B
{
SomeType x, y;
public static A methodB()
{
//some operation
return obj;
}
}
大卫在我之前的回答在技术上在第1点和第2点是正确的,尽管他也使用了你调用A型ClassA的错误。然而,他对第3点的回答的代码是不正确和误导的。我会改变他的措辞:
`3)What would the returned objct look like. I mean if my method returned an
integer, it would return some numerical value say '123' . If a method returns
an object of a class, what would be in the returrned value`.
它将是A类的一个实例。类似于在此处创建实例:
A objectA = new A();
此方法还创建(或以某种方式获取)实例:
A objectA = B.methodB();
在不知道更多关于A类是什么,它的构造函数是什么以及methodB做什么的情况下,这两个操作在其他方面是相同的。