public class Demo1 {
public static void main(String[] args){
Pupil p1=new Pupil();
p1.printname();
}
//学生类
}
class Stu{
public  int age;
public String name="*";
public  float fee;
public void printname(){
System.out.println("name is "+this.name);
}
}

//小学生类
class Pupil extends Stu{
public String name="松松";

}
     这个不是覆盖吗?为什么覆盖不了父类的name?那么要怎么写才能覆盖呢??

解决方案 »

  1.   

    属性没有覆盖,方法才有
    你想啊printname方法被编译在Stu.class里,它能知道Pupil.class里有个name吗?
    但是反过来可以,在子类当前class里找不到的时候会继续向上(父类)追溯
      

  2.   

    public class Demo1 {
    public static void main(String[] args){
    Pupil p1=new Pupil();
    p1.printname("松松");
    }
    //学生类
    }
    class Stu{
    public  int age;
    public String name="*";
    public  float fee;
    public void printname(){
    System.out.println("name is "+this.name);
    }
    }

    //小学生类
    class Pupil extends Stu{
    //public String name="松松";
    public void printname(String s){
    System.out.println(" name is "+s);
    }
    public void pay(float fee){

    }

    }
          谢谢!!非常感谢!
      我写了覆盖printname();上面的有用!但是我这样:
         public String printname(String s ){
          return s;
        }
    介个为什么没用呢??求解!
      

  3.   


    public class Demo1 {
    public static void main(String[] args){
    Pupil p1=new Pupil();
    p1.printname();
    }
    //学生类
    }
    class Stu{
    public int age;
    public String name="*";
    public float fee;
    public void printname(){
    System.out.println("name is "+this.name);
    }
    }//小学生类
    class Pupil extends Stu{
    public String name="松松";
    public void printname(){//覆盖掉方法
    System.out.println("name is "+this.name);
    }
    }要覆盖的话,函数定义应该和父类一摸一样才行啊 ;