abstract class Student
 {
 public abstract void study();
 public void sleep()
 {
 System.out.println("躺着睡");
 }
 }
 class BaseStudent
 {   public void study()
 {
 System.out.println("Base Study");
 }
 public void sleep()
 {
 System.out.println("坐着睡");
 }
 }
 class AdvStudent
 {   public void study()
 {
 System.out.println("Adv Study");
 }
 }
 class DoStudent
 {
 public  void dosome(Student stu)
 {
 stu.study();
 stu.sleep();
 } }class DuoTai 
{
public static void main(String[] args) 
{
/*
BaseStudent bs=new BaseStudent();
    bs.study();
bs.sleep();
AdvStudent as=new AdvStudent();
as.study();
as.sleep();
*/
DoStudent ds=new DoStudent();
//ds.dosome(new BaseStudent());
ds.dosome(new AdvStudent());
    }

}这个怎么解决、。class

解决方案 »

  1.   

    类型的问题,public  void dosome(Student stu)
    ds.dosome(new AdvStudent());
      

  2.   

    楼主啊,你忘记继承Student类了吧
      

  3.   

    楼主大哥,你的继承写掉了!!
    abstract class Student {
    public abstract void study(); public void sleep() {
    System.out.println("躺着睡");
    }
    }class BaseStudent extends Student{
    public void study() {
    System.out.println("Base Study");
    } public void sleep() {
    System.out.println("坐着睡");
    }
    }class AdvStudent extends Student{
    public void study() {
    System.out.println("Adv Study");
    }
    }class DoStudent {
    public void dosome(Student stu) {
    stu.study();
    stu.sleep();
    }}class DuoTai {
    public static void main(String[] args) {
    /*
     * BaseStudent bs=new BaseStudent(); bs.study(); bs.sleep(); AdvStudent
     * as=new AdvStudent(); as.study(); as.sleep();
     */
    DoStudent ds = new DoStudent();
     ds.dosome(new BaseStudent());
     ds.dosome(new AdvStudent());
    }}
      

  4.   

    class AdvStudent extends Student
    你没继承当然不能多态 粗心了吧
      

  5.   

    总结下,extends 继承了Student类才可以的
    多态: 方法的重载是属于多态
           对于变量,父类的引用指向子类对象可以称之为多态
    赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲