/*
基础班同学:
学习,睡觉
高级班同学:
学习、睡觉
*/
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());
}
}