关于OOP的信息,创建对象

时间:2012-02-28 09:58:25

标签: oop stack heap

我在理解OOP时遇到问题...
就是这样:

有时您使用以下语法创建对象:

Object ObjectName = new Object();

但有时候,我们不需要像在Android中那样做:

Textview TextviewName;

或者在J2ME中:

form formName;

我已经搜索过了,我得到了一些信息(但不确定),这是因为静态方法...是真的吗?我认为它与多态性有关系..是真的吗? 谢谢大家。

PS:Sory,如果我犯了一些错误,英语不是我的本地语言:D

3 个答案:

答案 0 :(得分:2)

忘记静态方法 - 它们在这里不相关。当你真正掌握了什么对象时,我主张只看静态方法/元素。

在Java中,您可以这样做:

Object object;

就像你可以这样做:

Object object = new Object();

在第一个示例中,您正在创建一个引用,但是您没有使用任何内容填充该引用,在第二个示例中,您正在创建引用并使用新对象填充它,您可以在其上调用方法,修改值等。

如果你尝试在第一个声明上调用方法,你将无法 - 那里什么也没有。根据语言以及您如何声明它,这可能会在运行时产生错误或编译时错误(Java会根据它是字段还是局部变量来执行。)但对于所有OO语言,原则是相同的,你不能在尚未填充的引用上取消引用(调用方法,字段等),因为实际上你试图在不存在的东西上调用方法。

答案 1 :(得分:1)

您的Textview不会被初始化。任何尝试使用它都会导致NullReference错误。为了实际创建对象,您必须使用新语法或返回有效对象的函数。

但是,这是一个依赖于语法的问题,因此首先要确定您要学习的语言。如果您的Textview已在C ++中声明,它实际上会在堆栈上创建一个对象。

答案 2 :(得分:1)

你正在混合使用不同的语言,而不是静态方法和多态的情况。 我建议从基础开始阅读一本好的OOP书。你可以找到"思考c ++"在网上免费..