初始化一个对象

时间:2012-03-05 11:43:24

标签: java android oop

来自:This is my question

所以现在我可以使用这段代码:

Window a = getWindow();
    a.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

而不是这段代码:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

我的一些高级管理员说,由于getWindow();方法返回一个Window对象,我们可以使用上面的两个代码。 我的问题是:为什么我们需要从这段代码中获取一个返回的Window对象:Window a = getWindow();

我想当我这样做时,我已经有了一个Window对象

Window a;

但为什么它不起作用?

我的第二个问题是为什么我不能这样做:

Window a = new Window();

我认为它也创建了一个Window对象。

为什么我必须使用getWindow();方法?

全部谢谢

PS:英语不是我的母语,如果我犯了一些错误就很抱歉

3 个答案:

答案 0 :(得分:4)

我在这里假设java:

Window a;

不会创建新的Window对象,它只会创建一个变量,该变量可以容纳Window类型的对象。要创建对象本身 - 在你的情况下你需要调用它的构造函数 - 我假设getWindow()做了什么。

此外,new Window是语法错误 - 调用java中的构造函数类似于方法[with ()和相关参数(如果有的话)。

答案 1 :(得分:2)

您可以使用它的构造函数创建对象。构造函数是一种方法 Window a = new Window;是Java中的语法错误。并且你不能在a之后使用Window a;因为在java中你必须在使用之前初始化变量。
你能用笔想象它吗?你必须先买那支笔,不是吗? Window a = new Window();
如果您编写它而不是Window a = new Window;

,这将正常工作

答案 2 :(得分:1)

这样想。你正在做面向对象的编程,对吧?你可以拥有一个对象的多个实例,但它们并不是完全相同的。

当你使用getWindow()时,你会得到一个特定的窗口。当你做的时候

Window a; //This will return null since the reference for some window object is created but currently points to null

Window a = new Window(ctx); //A window object reference is created which points to some new Window object in memory.

您正在引用一个窗口,但不是您打算使用的窗口。

我希望这可以解决问题。请好像还有其他问题。