我在理解OOP时遇到问题...
就是这样:
有时您使用以下语法创建对象:
Object ObjectName = new Object();
但有时候,我们不需要像在Android中那样做:
Textview TextviewName;
或者在J2ME中:
form formName;
我已经搜索过了,我得到了一些信息(但不确定),这是因为静态方法...是真的吗?我认为它与多态性有关系..是真的吗? 谢谢大家。
PS:Sory,如果我犯了一些错误,英语不是我的本地语言:D答案 0 :(得分:2)
忘记静态方法 - 它们在这里不相关。当你真正掌握了什么对象时,我主张只看静态方法/元素。
在Java中,您可以这样做:
Object object;
就像你可以这样做:
Object object = new Object();
在第一个示例中,您正在创建一个引用,但是您没有使用任何内容填充该引用,在第二个示例中,您正在创建引用并使用新对象填充它,您可以在其上调用方法,修改值等。
如果你尝试在第一个声明上调用方法,你将无法 - 那里什么也没有。根据语言以及您如何声明它,这可能会在运行时产生错误或编译时错误(Java会根据它是字段还是局部变量来执行。)但对于所有OO语言,原则是相同的,你不能在尚未填充的引用上取消引用(调用方法,字段等),因为实际上你试图在不存在的东西上调用方法。
答案 1 :(得分:1)
您的Textview不会被初始化。任何尝试使用它都会导致NullReference错误。为了实际创建对象,您必须使用新语法或返回有效对象的函数。
但是,这是一个依赖于语法的问题,因此首先要确定您要学习的语言。如果您的Textview已在C ++中声明,它实际上会在堆栈上创建一个对象。
答案 2 :(得分:1)
你正在混合使用不同的语言,而不是静态方法和多态的情况。 我建议从基础开始阅读一本好的OOP书。你可以找到"思考c ++"在网上免费..