就在我认为我开始理解基础知识的时候,我找到了一些让我回到现实的东西。在这种情况下,键入引用。
我找到了一个类似的例子:
class Worker
{
Boss boss;
public void Advise(Boss pBoss)
{
this.boss = pBoss;
}
如果Boss类中的方法不是静态的而不是实例化的,那么如何引用Boss类中的方法?
我想我真正的问题是:
之间的区别Boss boss;
和
Boss boss = new Boss();
答案 0 :(得分:9)
Boss boss;
创建一个名为boss
的{{1}}字段,默认值为Boss
。
null
创建一个名为Boss boss = new Boss();
的{{1}} 类型的变量,并存储对该变量中boss
类型的新实例的引用
答案 1 :(得分:1)
只需拥有代码Boss boss;
,您就可以创建类型为Boss
的类。当您使用代码Boss boss = new Boss();
实例化类或在this.boss = pBoss;
方法中设置变量Advise
时,您将能够访问Boss
的实例化实例上的方法和属性。 1}}对象。
答案 2 :(得分:1)
字段boss
可以包含对类Boss
的实例的引用。最初,boss
包含null
,这意味着它不会引用任何实例。说new Boss()
会创建Boss
的新实例。您可以在boss
中存储对此新实例的引用。
pBoss
也可以包含对Boss
实例的引用,您可以通过说boss
将此引用存储在boss = pBoss
中。
答案 3 :(得分:1)
如何引用其中的方法 Boss类如果不是静态的 没有实例化?
你做不到。除了int
之类的内置数据类型之外,总是必须实例化变量。
this.pBoss = Boss;
仅在Boss
类型的对象已在其他地方实例化并作为参数传递给Advise()
时才有效。如果以这种方式调用它:
Advise(null);
...然后你仍然无法使用Worker.boss
(它会抛出异常)。
对于它的价值,这在C ++这样的低级语言中更为明显。
答案 4 :(得分:0)
Advise()
方法接受Boss类的实例,然后将私有字段设置为该Boss实例。一旦调用了Advise方法并设置了Boss实例,Worker类就可以使用Boss公开的任何方法或属性。