黑马程序员技术交流社区

标题: 关于非静态成员函数和静态函数的讨论 [打印本页]

作者: 王维波    时间: 2011-10-28 09:55
标题: 关于非静态成员函数和静态函数的讨论
在多态中,静态成员函数,和非静态成员函数的区别在哪里?
请高手举例说明下,谢谢。

该贴已经同步到 保持常态0616的微博
作者: 黄健    时间: 2011-10-28 11:34
好像没什么区别吧,多态是指的面向接口、面向父类编程,在程序运行时根据传进来的子类,调用子类的具体实现方法,从而达到灵活的效果,而静态方法和非静态方法都能被继承且能被重写,和非静态方法一样的用;要说区别,就还是静态方法与非静态方法的区别,非静态方法调用时必需先创建对象,而静态方法不必先创建对象,直接用 类名.静态方法 就能调用。
作者: 陆华山    时间: 2011-10-28 11:36
加载的状态不同,静态随着类的加载就加载了,非静态却不是的
作者: olkldksl    时间: 2011-10-28 11:51
多态跟静态是两个概念。
多态是说一个类里面有几个同名的函数,但是各函数的参数不同,当调用这个函数的时候根据传入的不同参数区别具体是使用哪一个函数;
凡是被static修饰的成员变量或者成员函数,都是随类加载时候一起加载,不用通过对象,可以直接使用类名调用的
作者: 路新    时间: 2011-10-28 13:58
在多态中,当父类引用子类对象时  Fu f = new Zi();
非静态
在调用非静态的成员函数时,先看引用变量(Fu)是否有调用的方法,如果有,编译通过,没有则编译失败。
成员函数在多态调用时,编译时看左边(Fu),运行时看右边(Zi)
成员变量
无论编译和运行,都参考左边引用型变量所属的类
静态
静态成员函数的特点:无论运行都参考左边(引用型变量所属的类),因为静态成员无需建立对象就可以引用




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2