黑马程序员技术交流社区

标题: 关于继承中,函数重写的问题 [打印本页]

作者: ID1003    时间: 2014-5-18 17:18
标题: 关于继承中,函数重写的问题
本帖最后由 ID1003 于 2014-5-18 18:22 编辑

当子类和父类中存在相同的一个函数,比如 void show(){};但是父类中被private修饰了,那么这个方法,是子类把父类重写了吗?但是 private不是私有的吗?求解
作者: 帽子    时间: 2014-5-18 17:34
没有重写,
方法重写:
                一般是指在子类中出现了和父类一模一样的方法声明,方法体不一样。
                        A:父类的私有方法不能被重写。
                        B:子类重写后的方法的访问权限要大于等于父类方法的访问权限。
                        C:子类重写后的方法的返回值类型:
                                基本类型:一致。
                                引用类型:是父类本身或者父类的子类。
                开发中,基本上不会出现注意里面的问题,因为开发中方法声明都是一模一样的
作者: 格子、    时间: 2014-5-18 17:53
肯定没有重写啊
      在Java中重写指的的子类 中定义和父类一模一样的函数,参数值类型、参数个数都必须一样,方法体一样不一样就没要求了,要是一样还重写干嘛??!!
     另外最需要注意的就是权限了,子类中复写的方法权限要大于等于父类方法的权限!!!如果父类方法private私有了话就不能被重写了,至少也要是默认的权限,一般都是public权限。
   
  1. class Fu
  2. {//父类方法被私有了是不被继承的,除非对外提供访问方式
  3.      private void show();
  4. }
  5. class Zi extends Fu
  6. {//show()方法是子类特有的方法 ,因为父类中show方法他看不到
  7.     public void show()
  8.     {   }
  9. }
复制代码

作者: ID1003    时间: 2014-5-18 18:17
帽子 发表于 2014-5-18 17:34
没有重写,
方法重写:
                一般是指在子类中出现了和父类一模一样的方法声明,方法体不一样。

关于你说的B这一点,我突然间又想起来,我们老师说子类的返回值类型要小于父类的返回值类型,这句话是什么意思呢?
作者: mayor125    时间: 2014-5-18 18:17
当子父类中出现了同名方法的时候,如果父类中的方法被private私有的话,则子类中的同名方法不算是把父类中的同名方法给覆写了。
因为被private修饰的方法是不对外暴露的,也就是说子类根本就不知道父类中有这个方法,即使是在子类中写了一个同样的方法,也只能算是在子类当中重新编写了一个新的方法。

代码如下:
  1. class Person
  2. {
  3.         //父类中的show方法被private私有了。不对外暴露。
  4.         private void show(){}
  5. }

  6. class Student extends Person
  7. {
  8.         //子类中的show方法相当于是新创建的方法,不是覆写了父类的方法。
  9.         public void show(){}
  10. }

  11. class Demo
  12. {
  13.         public static void main(String[] args)
  14.         {
  15.                 new Student().show();
  16.         }
  17. }
复制代码


作者: ID1003    时间: 2014-5-18 18:21
mayor125 发表于 2014-5-18 18:17
当子父类中出现了同名方法的时候,如果父类中的方法被private私有的话,则子类中的同名方法不算是把父类中 ...

哦哦,有代码的话再加上你的解释,我看的还蛮清楚的了,谢谢奥:loveliness:
作者: 赵洋洋    时间: 2014-5-18 19:58
没有被重写,private修饰不会被重写




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