Oop 方法返回不同类的对象
我注意到有一种情况,即有一个Oop 方法返回不同类的对象,oop,Oop,我注意到有一种情况,即有一个class(比如:ClassA)具有变量声明和各种方法。在另一个类(比如:类B)中,有一个方法(MethodofClassB()),该方法的返回类型为ClassA 所以它就像: Class A { variable i,j; public int MethodA() { //some operation } } Class B { variable x,y; p
class
(比如:ClassA
)具有变量声明和各种方法。在另一个类
(比如:类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()返回类A的对象。Waty是返回ClassA对象的用途(意图)
2) 将MethodB()定义为公共静态的原因是什么。如果MethodB()不使用static,会发生什么
3) 返回的objct是什么样子的。我的意思是,如果我的方法返回一个整数,它将返回一些数值,比如“123”。如果一个方法返回一个类的对象,那么returrend值会是什么
请用一个小例子帮助我理解这一点
1) 我知道MethodB()返回类A的对象。Waty是返回ClassA对象的用途(意图)
取决于该方法的功能,本例中未对此进行说明。如果操作的结果是A
的实例,那么它将返回A
的实例,无论A
是什么
例如,如果A
是Car
而B
是CarFactory
,则该方法可能会生成新的Car
。因此,它将返回一辆已生产的汽车
2) 将MethodB()定义为公共静态的原因是什么。如果MethodB()不使用static,会发生什么
public
允许其他对象访问它<代码>静态
表示它与B
的特定实例不关联。这两种方法都是基于主观的,同样是基于方法的目的(示例中没有定义)。它是静态的,可以这样调用:
var newInstance = B.MethodB();
如果它不是静态的
,则需要B
的实例:
var objectB = new B();
var newInstance = objectB.MethodB();
这里有越来越多的含义,包括内存/资源使用和线程安全。所有这些都源于B
是什么以及MethodB
做什么的目的和业务逻辑意义
3) 返回的objct是什么样子的。我的意思是,如果我的方法返回一个整数,它将返回一些数值,比如“123”。如果一个方法返回一个类的对象,那么returrend值会是什么
它将是A
的一个实例。类似于在此处创建实例:
var objectA = new A();
A objectA = new A();
此方法还创建(或以某种方式获取)实例:
var objectA = B.MethodB();
A objectA = B.methodB();
如果不知道
A
是什么,它的构造函数做什么,以及MethodB
做什么,这两个操作在其他方面是相同的。首先,您的代码不正确。没有“ClassA”类。类名是,因此返回类型应该是而不是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;
}
}
David在我之前不久的回答在第1点和第2点上在技术上是正确的,尽管他也使用了您将A类型称为ClassA的错误。然而,他对第三点的回答代码是不正确的,具有误导性。我想把他的措辞改为:
`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类的实例。类似于在此处创建实例:
var objectA = new A();
A objectA = new A();
此方法还创建(或以某种方式获取)实例:
var objectA = B.MethodB();
A objectA = B.methodB();
在不了解更多关于类A是什么、它的构造函数做什么以及methodB做什么的情况下,这两个操作在其他方面是相同的。在我看来像是一个静态工厂方法——也就是说,出于各种不同的原因,从不同类中的方法返回对象是很常见的——这就是OOP的全部内容。问题的标签是
Java
(而不是JavaScript
)。@PM77-1:当我开始写答案时(事实上,根据修订记录,当我写完答案时)它还带有C#标记,这是我在回答中使用的。然后你能在回答中澄清你使用的是C#
语法吗?顺便说一下,这些都是非常基本的问题,通常在第一节本科编程课上就有。别粗鲁。同样在C#中,公共方法以大写字母开头:)我没有粗鲁。我解释说这些都是基本问题,希望能启发提问者研究CS课程。最后,这个问题用Java标记。我注意到提问者使用我的建议更新了他的问题。我想投票否决这个问题的几个人显然同意我的观点。@dsa42所以不是投票否决基本问题。他的问题很清楚,并有代码示例支持。无需强迫OP知道他/她在问一个简单的问题。如果没有基本的问题,那么就会有一群精英主义的混蛋发布关于“高级编程技术”的问题,而没有任何东西可以提供给新的开发人员。我同意,虽然OP应该考虑一些基本的OOP类或教程。其他人这样做了。在我回答之前,他们否决了这个问题。我所做的只是解释这是一个基本问题,并解释第一个问题是如何不正确的。