abstract class Animals
{
publicabstract void eat();
}
class cat extends Animals
{
publicvoid eat()
{
System.out.println("吃鱼");
}
publicvoid eatmouse()
{
System.out.println("看家");
}
}
class dog extends Animals
{
publicvoid eat()
{
System.out.println("吃骨头");
}
publicvoid kanhouse()
{
System.out.println("看家");
}
}
class pig extends Animals
{
publicvoid eat()
{
System.out.println("饲料");
}
publicvoid gongdi()
{
System.out.println("龚地");
}
}
public class Demoa
{
publicstatic void main(String[] args)
{
//catc =new cat();
//c.eat();
//catc1=new cat();
//b.eat();
//以上书写,较为麻烦..可以再次创建静态方法.
catc=new cat();
catc1=new cat();
funtion(c1);
funtion(c);
//funtion(newdog());
funtion(newpig());
}
/**
publicstatic void funtion (cat c)
{
c.eat();
}
publicstatic void funtion(dog d)
{
d.eat();
}
publicstatic void funtion(pig f)
{
f.eat();
}
这个项目涉及到的知识是多态:
父类的引用指定了自己的 子类对象.
父类的引用也可以接受自己的子类对象.
多态的前提 必须是类与类之间的关系要么继承,要么实现.
通常还有一个前提:存在覆盖 .
多态的好处 多态的出现大大提高了程序的扩展性
但是也有缺点 只能使用父类的引用 访问
*/
publicstatic void funtion(Animals f)
{
f.eat();
}
}