JAVA培训
位置:首页Java开发Java SE
 问题状态
 
这属于方法的重写吗???
 悬赏分:10  
class PrivateSup
{
 private String getString()
 {
  return "hello";
 }
}
class PrivateSon extends PrivateSup
{
 public String getString()
 {
  return "hello world";
 }
}
public class PrivateOver
{
 public static void main(String args[])
 {
  PrivateSon son = new PrivateSon();
  System.out.println(son.getString());
 }
}
/*
以上父类中的方法是私有的,那么子类的同名方法还属于方法的重写吗/此段代码编译没任何错误..
*/
提问者:nixzhaihaome@126.com  - 头衔:开发爱好者   
    
    
  最佳答案
  这样的方法不属于复写,因为父类的方法是私有的。而子类的的方法只不过是名字跟父类的方法一样罢了,如果父类的方法是public或者是protect的话,那么就是方法的复写了。你这样调用的话,肯定是调用的子类的方法了。
回答者:chengzhen_hit@126.com  - 头衔:开发爱好者 2007-6-22 16:09:00  

 回复答案 共16条
  不是重写,父类的方法为私有的
    回答者:qiyuan.1108@163.com  - 头衔:开发爱好者 2008-11-21 11:25:17  

  不是重写!
因为父类的方法是private,子类连访问权都没有。
    回答者:ken830909@163.com  - 头衔:开发爱好者 2008-6-30 17:54:12  

  晕,你java基础语法还要再看看啊
    回答者:tbgdwj01@163.com  - 头衔:开发爱好者 2008-6-28 14:37:51  

  你就可以这么理解下:
1.你要清楚什么叫方法的重写?&&方法的重载?
方法的重写都是发生在extends上的也就是说发生在继承关系的基础上的。方法的重载不是这种IS A...(“是”)的关系。
2.自己查下在什么情况下不能产生方法的重写呢?
以上的好朋友们都说了,当父类的方法是private即是私有的情况下,不能符合重写的条件。
3.相信你一定能搞定,知识是回朔性很强的,通过以后的学习会更清楚的了解的。
我个人觉得有时这种没什么大用,当然一定要懂。说不定面试或以后真的用上,多听多看多想!!!
    回答者:alonecong@gmail.com  - 头衔:开发爱好者 2008-5-1 0:11:24  

  不是重写,因为父类方法是私有的,所以子类方法根本访问不到
    回答者:zhuwei19850420@126.com  - 头衔:开发爱好者 2008-4-10 23:37:33  

  同意
    回答者:dabizi_1983@163.com  - 头衔:开发爱好者 2008-3-1 15:48:18  

  重新定义了,子类不能访问父类的私有方法
    回答者:weileixfxx@hotmail.com  - 头衔:开发爱好者 2008-2-10 14:19:21  

  class PrivateSup {
 
 private String getString() {
  return "hello";
 }
 
 public static void main(String args[]) {
  //父类引用指向子类
  PrivateSup son = new PrivateSon();
  System.out.println(son.getString());
 }
}
class PrivateSon extends PrivateSup {
 
 public String getString() {
  return "hello world";
 }
}
public class PrivateOver {
 
// public static void main(String args[]) {
//  PrivateSup son = new PrivateSon();
//  System.out.println(son);
// }
}
在你给的例子中做了点修改,根据运行结果就知道复写与否了,根据运行结果是没有被复写。
至于为什么把测试用的main方法放在父类中是因为:父类方法是private的,在外部类中调用不到,所以你在PrivateOver中的main方法没有起到测试的效果。
关于继承的问题,我是至于理解的,只要通过继承,之类就拥有了父类的所有成员(属性和方法),当然private 是不可见的对于子类;即在子类的属性里有个名为super的引用指向父类对象。
至于为什么private方法不能复写可以简单地理解为:父类这个方法都是不可见的,子类你都看不到,你怎么复写呢?但是java内部对于这4个权限是怎么判断、运作的(语言设计上具体的做法)?我也很迷茫,望大侠指点了。
    回答者:zhujianlove2002@yahoo.com.cn  - 头衔:开发爱好者 2007-12-6 1:30:15  

  当然不叫覆写了。子类不能继承父类的私有属性和方法,当然谈不上覆写了
    回答者:helenxiang861124@126.com  - 头衔:开发爱好者 2007-9-16 18:47:46  

  不属于方法的重写..
因为父类的方法为私有的,子类首先没有继承到这个方法,就职谈不上重写了,在子类里的方法,相当于重新定义了.. 
    回答者:server_06@163.com  - 头衔:开发爱好者 2007-8-6 21:20:59   
--------------------------------------------------------------------------------
 
    回答者:dingdaoyuan@126.com  - 头衔:开发爱好者 2007-9-5 13:20:08  

  不属于方法的重写..
因为父类的方法为私有的,子类首先没有继承到这个方法,就职谈不上重写了,在子类里的方法,相当于重新定义了..
    回答者:server_06@163.com  - 头衔:开发爱好者 2007-8-6 21:20:59  

  绝对是重写 
private 修饰方法的时候  这个方法只能在本类中访问
但重写的话 
只要重写后的方法的修饰符没有比父类方法的修饰符更严格的访问权限 ,都是可以的
    回答者:asaasa112233@hotmail.com  - 头衔:开发爱好者 2007-8-1 10:19:59  

  父类的方法的是private的
子类的方法和父类没什么关系, 只是个重新定义!
    回答者:david.0248@163.com  - 头衔:开发爱好者 2007-7-28 19:51:10  

  不属于重写,因为你的父类现在是private的,子类的方法和父类没有直接关系,相当于定义了一个名字相同的方法。son.getString()调用的是子类中的方法
    回答者:taidugaodu@163.com  - 头衔:开发爱好者 2007-6-22 18:17:10  

  不叫覆写,方法在子类中相当于重新定义了
    回答者:z2000lxh@sina.com  - 头衔:开发爱好者 2007-6-22 13:00:01  

我的回答:
回答即可得10分,被采纳则可得50分+悬赏分。
  验证码

 
 
最新问题
欢迎使用本系统,智囊团。踊跃回答,赢得积分。

使用有问题请到 帮助
 
关于我们 | 商务合作 | 招聘信息 | 客服中心 | 服务条款 | 免责声明 | 网站导航 |java培训QQ留言
Copyright 2007 zhinangtuan.net.cn all rights reserved 版权所有