就以下面这个程序来说,子类中的getVar()是否是对父类中的getVar()的覆盖?
class BaseClass
{
   private float x=1.0f; 
   private float getVar()
   {
    return x;
   } 

  class SubClass extends BaseClass
  { 
   private float x=2.0f; 
   public double getVar()
   { 
     return x;
   }
   public static void main(String args[])
   {
    System.out.println(new SubClass().getVar());
   }
  } 

解决方案 »

  1.   

    class BaseClass
    {
       private float x=1.0f; 
       private float getVar()//私有方法没有被子类继承,不能被覆盖,另外返回类型必须一样
       {
        return x;
       } 

      class SubClass extends BaseClass
      { 
       private float x=2.0f; 
       public double getVar()
       { 
         return x;
       }
       public static void main(String args[])
       {
        System.out.println(new SubClass().getVar());
       }
      } 
      

  2.   

    楼上的回答有问题子类继承父类将继承父类的一切,包括私有的,只是子类不能自己调用父类的私有方法,但是可以用公有方法间接调用私有方法,所以如果子类的某个私有方法跟父类的某个私有方法如果仅仅是返回类型不同,编译是没有问题的,但是如果是public的则不行,这就相当于两者取谁不可知的问题了
    另外,这类问题楼主完全可以自己处理,何必到这里来问呢?public class T060416 {
    public static void main(String[] args) {
    Base s = new Sub();
    s.b();
    }
    }class Base{
    private int a(){
    System.out.println("A.a()");
    return 1;
    }

    public void b(){
    a();
    }
    }class Sub extends Base{
    private double a(){
    System.out.println("B.a()");
    return 1.0;
    }

    public void b(){
    a();
    }
    }
      

  3.   

    呵呵,believefym(暮色,miss,迷失,miss) 说的对,这类问题可以自己写个代码测试出来的,没有必要什么都问别人的!
      

  4.   

    楼上说的很详细,感激!
    1.其实私有方法都是FINAL的,所以不能覆盖
    2.楼主的程序有问题System.out.println(new SubClass().getVar());只是调用了子类的 getVar ();
    3.我说的可能简单了些,有些误导,父类的私有方法对于子类的一个实例是不可见的,只能通过父类的公有方法来访问