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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 燕国庆 高级黑马   /  2012-12-2 11:49  /  1411 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 燕国庆 于 2012-12-2 21:12 编辑

当父类的方法是被private修饰时,子类中写一个与之完全相同的函数,这是一个全新的函数吗,在这里是重写吗,在看张老师视频时,里面有这样的问题                  有点不明白是怎么回事

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

4 个回复

倒序浏览
不是重写,既然父类的方法被private修饰了,那么这个方法就私有了,其他类是无法访问的。重写是子类父类方法一模一样,即使你在子类中写一个与之完全相同的函数,子类无法调用父类中私有的方法。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
因为private方法是不能被子类访问的,所以当子类写了一个和父类完全相同的方法时,这个方法是一个全新的方法,所以不叫重写

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
不是重写,方法重写就是子类覆盖父类同名方法,重写的特点为方法名与父类相同,参数的个数与数据类型一一对应。
方法重写(overiding method) 子类不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。
class Human
{
   public void say(int age)
   {
      System.out.println("I am a human.I am "+age);
   }
}

class Man extends Human
{
  public void say(int age)  //重写父类方法say(int age)
   {
      System.out.println("I am a man.I am "+age);
   }
}

重写方法的规则:
1、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
2、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
3、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如:
父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
父类成员被private修饰了,对外界就隐藏了,相当于外界不知道有这么个东东,这么重写了?既然是用private修饰肯定是不想暴漏出去,如果想要重写就不要用private修饰
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马