class t2
{
 private void test()
 {
  System.out.println("t2 test");
  }
}
class t3 extends t2
{
public void test()
{
System.out.println("t3 test");
}

}
public class t1
{
public static void main(String[] args)
{
t3 t = new t3();
t.test();

}

}
输出结果是"t3 test"
这样也构成覆盖吗?不可能是重载

解决方案 »

  1.   

    class t3 extends t2之后重写了test()方法。````
      

  2.   

    不叫覆盖,他没从父类继承过来priate方法,而是写一个新的方法.
      

  3.   

    1. 子类 继承 父类 的所有方法 除了构造方法 
      因此 t2中的 test()方法 虽然是 priate 但也被继承过来了
     只不过 t3 中 不能用 这个方法而已
    2.  t3 test() 方法 是属于 t3 自己的 与 父类无关 
    所有 即不是覆盖 也不是重载
    记住两个概念:
          a 方法重载:在同一个类中有相同的 名称 但参数类表不同
          b 方法重写:在两个类中要求 名字 类型 参数列表都相同 方法体不同
      

  4.   

    将继承过来的东西从新定义才叫覆盖
    现在t2中的方法是private,根本没有被t3继承
    t3只是定义了一个和t2中名字相同的方法
    其实和t2没有任何关系
      

  5.   

    private的方法.对子类是不可见的.怎么去覆盖?