黑马程序员技术交流社区

标题: 继承中的static [打印本页]

作者: 程有愿    时间: 2012-7-2 16:43
标题: 继承中的static
为什么一个类继承了另一个类后,如果父类的函数为static类型的,在子类中相同名称的函数也必须定义为static
作者: 蒋映辉    时间: 2012-7-2 16:49
继承嘛,复写的子类那些限定都必须一样的,包括是否是静态   返回参数  传入的变量 都要一样才能覆盖父类中的方法呢
作者: 黄丽慧    时间: 2012-7-2 16:57
父类中的函数如果为static型的话,其在内存中的存放位置是方法区,而且随着类的加载而加载,可以通过创建实例来调用,也可以通过类名.方法名来调用。如果子类中的同名函数如果不是static型的话,只能通过创建实例来调用,而且如果想要对父类方法进行覆盖也是不可以的,因为内存中的存放位置不一样。所以父类的函数为static类型时,子类中与父类同名的函数也应该是static型的。
作者: 王亚飞    时间: 2012-7-2 16:58
父类是static的子类继承后也必须是static的就像你和你老爸是一个姓是一样的
作者: 程有愿    时间: 2012-7-2 17:33
难不成继承子类非得复写父类的方法吗?
作者: 程有愿    时间: 2012-7-2 17:36
感觉2楼和4楼说的不太靠谱,3楼有点靠谱但还是不懂啊
作者: 程有愿    时间: 2012-7-2 17:44
蒋映辉 发表于 2012-7-2 16:49
继承嘛,复写的子类那些限定都必须一样的,包括是否是静态   返回参数  传入的变量 都要一样才能覆盖父类中 ...

如果不加static算不算不是复写呢,难道子类非得复写么?
作者: 蒋映辉    时间: 2012-7-2 17:47
转身丶从此陌 发表于 2012-7-2 17:33
难不成继承子类非得复写父类的方法吗?

如果不复写的话   内存中已经有了父类中的方法 子类中再来相同名的方法  肯定就写不进去了嘛
作者: 葛奎    时间: 2012-7-2 20:40
因为子类继承的父类的时候 ,子类具备了父类中的方法
相当于子类中有了这个static方法,  如果你想写入一个同名的方法
有两种形式:
1,重写:
   重写该方法,重写的规则是新方法必须和被重写方法形式完全一样
2,重载:
   你可以写个同名函数,使得参数类型或个数与原函数不同
你上面说的static问题,其实也就是重载问题
重载必须是:参数类型或个数不同  
如果只是返回类型或者前面的修饰符不一样,是不能编译通过的.

作者: 程有愿    时间: 2012-7-2 21:37
饿  了解了 谢谢各位大虾!




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