黑马程序员技术交流社区
标题:
多态中的静态方法
[打印本页]
作者:
I空空
时间:
2014-12-26 23:32
标题:
多态中的静态方法
静态方法在多态中,编译和运行是什么样的情况啊,总是搞不清楚,求大神指点
作者:
月老~牵红线
时间:
2014-12-27 09:59
Java中对成员变量和静态方法的调用是采用静态绑定的,也就是在编译时期就选择好了,是根据引用被声明的类型来决定。而对非静态方法的调用,是采用动态绑定的,编译时先看父类中是否有调用的方法,有,通过,在运行时判断子类是否有调用的方法,有,就运行,正是这实现了多态。
总结来说:成员变量和静态函数在多态调用时,无论编译和运行,都参考做左边;非静态函数在多态调用时,编译看左边,运行看右边。
个人理解,不对请指正。
作者:
小僧玄奘
时间:
2014-12-27 10:44
静态方法属于类的方法。成员方法是对象的方法。
class A{
public void open(){}//普通方法
public static void close(){}//静态方法
}
A a= new A();
a.open(); 这个open方法是a对象的。你再new一个b 去调用open(),那也是b对象的方法
而static close()此静态方法在类new的时候只执行一次
作者:
chenshiji
时间:
2014-12-27 19:34
楼主问题比较笼统,能否描述清楚些?
作者:
只会金克斯
时间:
2014-12-27 21:39
就只是按照楼主的提问来讲。
1.先明白多态的前提是什么:
1)有继承关系 2)子类重写父类方法 3)父类引用指向子类对象
2.了解静态方法
静态方法优先于对象存在,随着类的加载而加载
这样就是说 静态方法其实是不会有多态行为的,因为静态方法是优先于对象存在的,在还没有创建子类对象的时候就存在了,而且可以通过类名直接调用。
如果要重写静态方法,那也只能被静态方法重写。。
个人见解
作者:
找寻小龙猫
时间:
2014-12-28 02:25
月老~牵红线 发表于 2014-12-27 09:59
Java中对成员变量和静态方法的调用是采用静态绑定的,也就是在编译时期就选择好了,是根据引用被声明的类型 ...
头像好赞
作者:
wf111sxwf
时间:
2014-12-28 17:30
这么说吧 静态是不存在多态的,多态是以对象为基础的,静态成员 属于类不属于对象,所以不要纠结这个问题
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2