想问下,private方法到底能不能重写??

解决方案 »

  1.   

    你觉得private方法重写有意义吗?方法是为了给外部程序调用才写的,private方法外部程序无法调用.因此如果要重写是不可以的.但特殊情况本类里可以声明为private方法,只可以在本类里调用.
      

  2.   

    当然可以啦
    public class TestByteToString extends TestByteToStringBase {
      public static void main(String[] args) {
        System.out.println(getId());
      }  private int getId() {
        return 2;
      }
    }class TestByteToStringBase {
      private int getId() {
        return 1;
      }
    }
      

  3.   

    技术上是可以(象java2000_net 那样),但从设计上来看,就没有这个必要啦。
      

  4.   

    哪里重写了...
    private本来就是属于类的
    两个private只是在他们分别的类里起作用,根本和重写没有关系
      

  5.   

    方法重写(overiding method) 子类不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。就是子类覆盖父类的方法了。 父类private的方法, 对子类来说是不可见的,  也就不存在方法重写.
      

  6.   

    在java中,private 方法是不能重写的,因为private 方法默认是final的!
      

  7.   

    同意楼上,private 是默认的final
      

  8.   

    private方法不可被继承,自然不可被重写
      

  9.   

    private 方法只属于本类,不能被继承,所以谈不上重写了。
      

  10.   

    同意 在java中,private   方法是不能重写的,因为private   方法默认是final的! 
      

  11.   

    "重写"private方法,有时候在实战中必不得已还是要用到的。一切皆有可能。
      

  12.   

    重写的前提是要能继承过来 然后才是重写如果在子类里又写了一个同名的private方法那只是子类自己的 和父类的同名private没有任何关系 父类private方法根本就不可继承不可见的又何谈重写?
      

  13.   

    重写的前提是要能继承过来 子类的同名private方法只是他自己的 和 父类的private方法没任何关系 父类的private方法根本就不可继承不可见的又何谈重写?
      

  14.   

    晕 以为LZ要重新private   关键字...
      

  15.   

    To2楼:
    TestByteToStringBase tb=new TestByteToString();
    tb.getId();//这句根本无法调用,如果换成public或protected就可以调用了.输出的是子类的方法,是2.
      

  16.   

    我觉得也不能重写的....可是我看了tij上面可以重写.....让我觉得很莫名其妙.private是可以重写的...但是没的意义....一般情况下是不重写private方法的....
      

  17.   

    晕,你编译看看不久更加深印象了吗?我同意上面几层楼的说法,我也测试的代码,确实编译时,没有提示 @Override 参数警告
    也就是他们说的,这不叫 Override 啦!呵呵! 概念性错误,虽然看上去好像很正确。 public class TestByteToString extends TestByteToStringBase {
      public static void main(String[] args) throws Exception {
    //    new TestByteToString().getId();
      }  private int getId() {  // 这里显示的是本地方法没有使用,而不是 @Override 警告
        return 2;
      }  @Override                        ///// 如果不写这个,在打开编译开关时,显示需要@Override警告
      public String toString() {
        return null;
      }
    }class TestByteToStringBase {
      private int getId() {
        return 1;
      }  public void mm() {
        getId();
      };
    }
      

  18.   

    2楼举的例子里2个getId()是没有任何关系的 只是他两个的方法名称相同而已 因为TestByteToString 不能继承private 的方法的
      

  19.   

    同意ahliyo的说法,是两个方法而已
      

  20.   

    方法重写(overiding   method)   子类不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。就是子类覆盖父类的方法了。   父类private的方法,   对子类来说是不可见的,     也就不存在方法重写.
    就是上面讲的这样。子类在写一个同样名字同参数的方法,那也是另一个方法,并不是重写父类的那个方法