A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程有愿 中级黑马   /  2012-7-2 16:43  /  2574 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么一个类继承了另一个类后,如果父类的函数为static类型的,在子类中相同名称的函数也必须定义为static

9 个回复

倒序浏览
继承嘛,复写的子类那些限定都必须一样的,包括是否是静态   返回参数  传入的变量 都要一样才能覆盖父类中的方法呢
回复 使用道具 举报
父类中的函数如果为static型的话,其在内存中的存放位置是方法区,而且随着类的加载而加载,可以通过创建实例来调用,也可以通过类名.方法名来调用。如果子类中的同名函数如果不是static型的话,只能通过创建实例来调用,而且如果想要对父类方法进行覆盖也是不可以的,因为内存中的存放位置不一样。所以父类的函数为static类型时,子类中与父类同名的函数也应该是static型的。
回复 使用道具 举报
父类是static的子类继承后也必须是static的就像你和你老爸是一个姓是一样的
回复 使用道具 举报
难不成继承子类非得复写父类的方法吗?
回复 使用道具 举报
感觉2楼和4楼说的不太靠谱,3楼有点靠谱但还是不懂啊
回复 使用道具 举报
蒋映辉 发表于 2012-7-2 16:49
继承嘛,复写的子类那些限定都必须一样的,包括是否是静态   返回参数  传入的变量 都要一样才能覆盖父类中 ...

如果不加static算不算不是复写呢,难道子类非得复写么?
回复 使用道具 举报
转身丶从此陌 发表于 2012-7-2 17:33
难不成继承子类非得复写父类的方法吗?

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

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
饿  了解了 谢谢各位大虾!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马