/* 基础班同学: 学习,睡觉 高级班同学: 学习、睡觉 */ abstract class Student { public abstract void study(); public void sleep() { System.out.println("躺着睡"); } } class BaseStudent extends Student { public void study() { System.out.println("baseStudent"); } public void sleep() //如果没有覆写父类的sleep方法,子类对象在调用方法的时候调用父类的sleep方法。 { System.out.println("站着睡"); } } class Factory { public void DoSomething(Student stu) //此处要求Student类中的方法才能使用,子类的方法不能使用。子类方法需要对此方法进行覆写, { stu.study(); stu.sleep(); } } class Duotai { public static void main(String[] args) { Student stu=new BaseStudent(); //一个对象的多态,基础班的学生是基础班类型也是学生类型。父类的引用指向了自己的子类对象。 stu.study(); stu.sleep(); Factory fc=new Factory(); fc.DoSomething(new BaseStudent()); } }