/*
多态
01 父类的引用指向自己子类的多态
02 多态的存在提高了程序的扩展性
03 多态的前提 必须是类与类之间有关系 要么继承要么实现 还有就是存在覆盖
04 子类向上转型 和父类向下转型 instanceof
*/
/*
abstract class Animal
{
abstract void eat();
}
class Car extends Animal
{
public void eat()
{
System.out.println("吃鱼");
}
public void catmouse()
{
System.out.println(" catch mounse");
}
}
class Pig extends Animal
{
public void eat()
{
System.out.println("史料");
}
public void sleep()
{
System.out.println(" 猪头");
}
}
class Duotai
{
public static void main(String[] args)
{
//Car c=new Car();
//funtion(c);
//Pig p=new Pig();
//funtion(p);
父类指向子类
//Animal a=new Car();
//a.eat();
//funtion(new Car());
//funtion(new Pig());
这个是向上转型
//Animal a=new Car();
//a.eat();
这个是向下转型
//Car c=(Car)a;
//c.catmouse();
//利用多态转型
funtion(new Pig());
funtion(new Car());
}
public static void funtion(Animal a)
{
a.eat();
// 多态转型
if(a instanceof Pig)
{
Pig p=(Pig)a;
p.sleep();
}
else if(a instanceof Car)
{
Car c=(Car)a;
c.catmouse();
}
}
//public static void funtion(Car c)
//{
//c.eat();
//}
//public static void funtion(Pig g)
//{
//g.eat();
//}
}
*/
/*
工具类
*/
class DoStudent
{
public void dosome(Student stu)
{
stu.study();
stu.sleep();
}
}
abstract class Student
{
public abstract void study();
public void sleep()
{
System.out.println("躺在睡");
}
}
class BaseStudent extends Student
{
public void study()
{
System.out.println("基础学习");
}
public void sleep()
{
System.out.println("坐着睡");
}
}
class AdvStudnet extends Student
{
public void study()
{
System.out.println("abv 学习");
}
}
class Gongjulei
{
public static void main(String[] args)
{
DoStudent d=new DoStudent();
}
}